From 96b05e9646cc8ca0b8d82c171b697a05fb43770b Mon Sep 17 00:00:00 2001 From: Ayush Aggarwal Date: Mon, 14 Oct 2024 17:08:38 -0700 Subject: [PATCH] v1.0.1 --- cache/solidity-files-cache.json | 1 + lib/utils/SafeCast.sol | 21 +++++++++ out/Address.sol/Address.json | 1 + .../AddressUpgradeable.json | 1 + out/Base.sol/CommonBase.json | 1 + out/Base.sol/ScriptBase.json | 1 + out/Base.sol/TestBase.json | 1 + .../BeaconChainProofs.json | 1 + out/Client.t.sol/MockClientTest.json | 1 + out/Context.sol/Context.json | 1 + .../ContextUpgradeable.json | 1 + .../DelegationManager.json | 1 + .../DelegationManagerStorage.json | 1 + out/DummyToken.sol/DummyToken.json | 1 + out/ECDSA.sol/ECDSA.json | 1 + .../EIP1271SignatureUtils.json | 1 + out/ERC1967Proxy.sol/ERC1967Proxy.json | 1 + out/ERC1967Upgrade.sol/ERC1967Upgrade.json | 1 + out/ERC20.sol/ERC20.json | 1 + out/ERC20/IERC20.sol/IERC20.json | 1 + out/Endian.sol/Endian.json | 1 + .../FixedPointMathLib.json | 1 + out/FullMath.sol/FullMath.json | 1 + out/IAVSDirectory.sol/IAVSDirectory.json | 1 + out/IBeacon.sol/IBeacon.json | 1 + .../IBeaconChainOracle.json | 1 + .../IDelegationManager.json | 1 + out/IERC1271.sol/IERC1271.json | 1 + out/IERC20.sol/IERC20.json | 1 + out/IERC20Metadata.sol/IERC20Metadata.json | 1 + out/IETHPOSDeposit.sol/IETHPOSDeposit.json | 1 + out/IEigenPod.sol/IEigenPod.json | 1 + .../IEigenPodManager.json | 1 + out/IMulticall3.sol/IMulticall3.json | 1 + out/IPausable.sol/IPausable.json | 1 + out/IPauserRegistry.sol/IPauserRegistry.json | 1 + .../IPredicateClient.json | 1 + .../IPriceAggregator.json | 1 + out/IRateLimiter.sol/IRateLimiter.json | 1 + out/IServiceManager.sol/IServiceManager.json | 1 + out/ISignatureUtils.sol/ISignatureUtils.json | 1 + out/ISlasher.sol/ISlasher.json | 1 + out/IStakeRegistry.sol/IStakeRegistry.json | 1 + out/IStrategy.sol/IStrategy.json | 1 + .../IStrategyManager.json | 1 + out/IUniswapV3Pool.sol/IUniswapV3Pool.json | 1 + .../IUniswapV3PoolActions.json | 1 + .../IUniswapV3PoolDerivedState.json | 1 + .../IUniswapV3PoolErrors.json | 1 + .../IUniswapV3PoolEvents.json | 1 + .../IUniswapV3PoolImmutables.json | 1 + .../IUniswapV3PoolOwnerActions.json | 1 + .../IUniswapV3PoolState.json | 1 + out/Initializable.sol/Initializable.json | 1 + out/Merkle.sol/Merkle.json | 1 + out/MetaCoin.sol/MetaCoin.json | 1 + .../MetaCoinWithRateLimit.json | 1 + out/MockClient.sol/MockClient.json | 1 + .../MockDelegationManager.json | 1 + .../MockEigenPodManager.json | 1 + .../MockPriceAggregator.json | 1 + out/MockProxy.sol/MockProxy.json | 1 + out/MockProxyAdmin.sol/MockProxyAdmin.json | 1 + .../MockStakeRegistry.json | 1 + .../MockStrategyManager.json | 1 + .../MockUniswapV3Pool.json | 1 + out/OracleLibrary.sol/OracleLibrary.json | 1 + out/Ownable.sol/Ownable.json | 1 + .../OwnableUpgradeable.json | 1 + out/Ownership.t.sol/OwnershipClientTest.json | 1 + .../OwnershipServiceManagerTest.json | 1 + out/Pausable.sol/Pausable.json | 1 + out/PoolAddress.sol/PoolAddress.json | 1 + out/PredicateClient.sol/PredicateClient.json | 1 + .../PriceAggregatorUniV3.json | 1 + .../OwnershipPriceAggregatorUniV3Test.json | 1 + .../PriceAggregatorUniV3Test.json | 1 + out/Proxy.sol/Proxy.json | 1 + out/ProxyAdmin.sol/ProxyAdmin.json | 1 + out/RateLimiter.sol/RateLimiter.json | 1 + out/RateLimiter.t.sol/RateLimiterTest.json | 1 + out/STMSetup.sol/STMSetup.json | 1 + out/STMTest.t.sol/STMTest.json | 1 + out/SafeCast.sol/SafeCast.json | 1 + out/ServiceManager.sol/ServiceManager.json | 1 + .../ServiceManagerTest.json | 1 + .../ServiceManagerSetup.json | 1 + out/StdAssertions.sol/StdAssertions.json | 1 + out/StdChains.sol/StdChains.json | 1 + out/StdCheats.sol/StdCheats.json | 1 + out/StdCheats.sol/StdCheatsSafe.json | 1 + out/StdError.sol/stdError.json | 1 + out/StdInvariant.sol/StdInvariant.json | 1 + out/StdJson.sol/stdJson.json | 1 + out/StdMath.sol/stdMath.json | 1 + out/StdStorage.sol/stdStorage.json | 1 + out/StdStorage.sol/stdStorageSafe.json | 1 + out/StdStyle.sol/StdStyle.json | 1 + out/StdUtils.sol/StdUtils.json | 1 + out/StorageSlot.sol/StorageSlot.json | 1 + out/Strings.sol/Strings.json | 1 + out/TestPrep.sol/TestPrep.json | 1 + out/TestStorage.sol/TestStorage.json | 1 + out/TestUtils.sol/TestUtils.json | 1 + out/TickMath.sol/TickMath.json | 1 + .../TransparentUpgradeableProxy.json | 1 + out/Vm.sol/Vm.json | 1 + out/Vm.sol/VmSafe.json | 1 + out/beacon/IBeacon.sol/IBeacon.json | 1 + .../0536e4cd3e0a76c3f5fbf0887dc6f9d4.json | 1 + out/console.sol/console.json | 1 + out/console2.sol/console2.json | 1 + out/draft-IERC1822.sol/IERC1822Proxiable.json | 1 + .../IBeaconChainOracle.json | 1 + .../IDelegationManager.json | 1 + .../IETHPOSDeposit.sol/IETHPOSDeposit.json | 1 + out/interfaces/IEigenPod.sol/IEigenPod.json | 1 + .../IEigenPodManager.json | 1 + out/interfaces/IPausable.sol/IPausable.json | 1 + .../IPauserRegistry.sol/IPauserRegistry.json | 1 + .../ISignatureUtils.sol/ISignatureUtils.json | 1 + out/interfaces/ISlasher.sol/ISlasher.json | 1 + out/interfaces/IStrategy.sol/IStrategy.json | 1 + .../IStrategyManager.json | 1 + .../BeaconChainProofs.json | 1 + out/libraries/Endian.sol/Endian.json | 1 + out/libraries/Merkle.sol/Merkle.json | 1 + out/test.sol/DSTest.json | 1 + out/test.sol/Test.json | 1 + out/utils/Context.sol/Context.json | 1 + src/examples/MetaCoin.sol | 44 +++++++++++++++++++ src/examples/MetaCoinWithRateLimit.sol | 40 +++++++++++++++++ 132 files changed, 234 insertions(+) create mode 100644 cache/solidity-files-cache.json create mode 100644 lib/utils/SafeCast.sol create mode 100644 out/Address.sol/Address.json create mode 100644 out/AddressUpgradeable.sol/AddressUpgradeable.json create mode 100644 out/Base.sol/CommonBase.json create mode 100644 out/Base.sol/ScriptBase.json create mode 100644 out/Base.sol/TestBase.json create mode 100644 out/BeaconChainProofs.sol/BeaconChainProofs.json create mode 100644 out/Client.t.sol/MockClientTest.json create mode 100644 out/Context.sol/Context.json create mode 100644 out/ContextUpgradeable.sol/ContextUpgradeable.json create mode 100644 out/DelegationManager.sol/DelegationManager.json create mode 100644 out/DelegationManagerStorage.sol/DelegationManagerStorage.json create mode 100644 out/DummyToken.sol/DummyToken.json create mode 100644 out/ECDSA.sol/ECDSA.json create mode 100644 out/EIP1271SignatureUtils.sol/EIP1271SignatureUtils.json create mode 100644 out/ERC1967Proxy.sol/ERC1967Proxy.json create mode 100644 out/ERC1967Upgrade.sol/ERC1967Upgrade.json create mode 100644 out/ERC20.sol/ERC20.json create mode 100644 out/ERC20/IERC20.sol/IERC20.json create mode 100644 out/Endian.sol/Endian.json create mode 100644 out/FixedPointMathLib.sol/FixedPointMathLib.json create mode 100644 out/FullMath.sol/FullMath.json create mode 100644 out/IAVSDirectory.sol/IAVSDirectory.json create mode 100644 out/IBeacon.sol/IBeacon.json create mode 100644 out/IBeaconChainOracle.sol/IBeaconChainOracle.json create mode 100644 out/IDelegationManager.sol/IDelegationManager.json create mode 100644 out/IERC1271.sol/IERC1271.json create mode 100644 out/IERC20.sol/IERC20.json create mode 100644 out/IERC20Metadata.sol/IERC20Metadata.json create mode 100644 out/IETHPOSDeposit.sol/IETHPOSDeposit.json create mode 100644 out/IEigenPod.sol/IEigenPod.json create mode 100644 out/IEigenPodManager.sol/IEigenPodManager.json create mode 100644 out/IMulticall3.sol/IMulticall3.json create mode 100644 out/IPausable.sol/IPausable.json create mode 100644 out/IPauserRegistry.sol/IPauserRegistry.json create mode 100644 out/IPredicateClient.sol/IPredicateClient.json create mode 100644 out/IPriceAggregator.sol/IPriceAggregator.json create mode 100644 out/IRateLimiter.sol/IRateLimiter.json create mode 100644 out/IServiceManager.sol/IServiceManager.json create mode 100644 out/ISignatureUtils.sol/ISignatureUtils.json create mode 100644 out/ISlasher.sol/ISlasher.json create mode 100644 out/IStakeRegistry.sol/IStakeRegistry.json create mode 100644 out/IStrategy.sol/IStrategy.json create mode 100644 out/IStrategyManager.sol/IStrategyManager.json create mode 100644 out/IUniswapV3Pool.sol/IUniswapV3Pool.json create mode 100644 out/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json create mode 100644 out/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json create mode 100644 out/IUniswapV3PoolErrors.sol/IUniswapV3PoolErrors.json create mode 100644 out/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json create mode 100644 out/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json create mode 100644 out/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json create mode 100644 out/IUniswapV3PoolState.sol/IUniswapV3PoolState.json create mode 100644 out/Initializable.sol/Initializable.json create mode 100644 out/Merkle.sol/Merkle.json create mode 100644 out/MetaCoin.sol/MetaCoin.json create mode 100644 out/MetaCoinWithRateLimit.sol/MetaCoinWithRateLimit.json create mode 100644 out/MockClient.sol/MockClient.json create mode 100644 out/MockDelegationManager.sol/MockDelegationManager.json create mode 100644 out/MockEigenPodManager.sol/MockEigenPodManager.json create mode 100644 out/MockPriceAggregator.sol/MockPriceAggregator.json create mode 100644 out/MockProxy.sol/MockProxy.json create mode 100644 out/MockProxyAdmin.sol/MockProxyAdmin.json create mode 100644 out/MockStakeRegistry.sol/MockStakeRegistry.json create mode 100644 out/MockStrategyManager.sol/MockStrategyManager.json create mode 100644 out/MockUniswapV3Pool.sol/MockUniswapV3Pool.json create mode 100644 out/OracleLibrary.sol/OracleLibrary.json create mode 100644 out/Ownable.sol/Ownable.json create mode 100644 out/OwnableUpgradeable.sol/OwnableUpgradeable.json create mode 100644 out/Ownership.t.sol/OwnershipClientTest.json create mode 100644 out/Ownership.t.sol/OwnershipServiceManagerTest.json create mode 100644 out/Pausable.sol/Pausable.json create mode 100644 out/PoolAddress.sol/PoolAddress.json create mode 100644 out/PredicateClient.sol/PredicateClient.json create mode 100644 out/PriceAggregatorUniV3.sol/PriceAggregatorUniV3.json create mode 100644 out/PriceAggregatorUniV3.t.sol/OwnershipPriceAggregatorUniV3Test.json create mode 100644 out/PriceAggregatorUniV3.t.sol/PriceAggregatorUniV3Test.json create mode 100644 out/Proxy.sol/Proxy.json create mode 100644 out/ProxyAdmin.sol/ProxyAdmin.json create mode 100644 out/RateLimiter.sol/RateLimiter.json create mode 100644 out/RateLimiter.t.sol/RateLimiterTest.json create mode 100644 out/STMSetup.sol/STMSetup.json create mode 100644 out/STMTest.t.sol/STMTest.json create mode 100644 out/SafeCast.sol/SafeCast.json create mode 100644 out/ServiceManager.sol/ServiceManager.json create mode 100644 out/ServiceManager.t.sol/ServiceManagerTest.json create mode 100644 out/ServiceManagerSetup.sol/ServiceManagerSetup.json create mode 100644 out/StdAssertions.sol/StdAssertions.json create mode 100644 out/StdChains.sol/StdChains.json create mode 100644 out/StdCheats.sol/StdCheats.json create mode 100644 out/StdCheats.sol/StdCheatsSafe.json create mode 100644 out/StdError.sol/stdError.json create mode 100644 out/StdInvariant.sol/StdInvariant.json create mode 100644 out/StdJson.sol/stdJson.json create mode 100644 out/StdMath.sol/stdMath.json create mode 100644 out/StdStorage.sol/stdStorage.json create mode 100644 out/StdStorage.sol/stdStorageSafe.json create mode 100644 out/StdStyle.sol/StdStyle.json create mode 100644 out/StdUtils.sol/StdUtils.json create mode 100644 out/StorageSlot.sol/StorageSlot.json create mode 100644 out/Strings.sol/Strings.json create mode 100644 out/TestPrep.sol/TestPrep.json create mode 100644 out/TestStorage.sol/TestStorage.json create mode 100644 out/TestUtils.sol/TestUtils.json create mode 100644 out/TickMath.sol/TickMath.json create mode 100644 out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json create mode 100644 out/Vm.sol/Vm.json create mode 100644 out/Vm.sol/VmSafe.json create mode 100644 out/beacon/IBeacon.sol/IBeacon.json create mode 100644 out/build-info/0536e4cd3e0a76c3f5fbf0887dc6f9d4.json create mode 100644 out/console.sol/console.json create mode 100644 out/console2.sol/console2.json create mode 100644 out/draft-IERC1822.sol/IERC1822Proxiable.json create mode 100644 out/interfaces/IBeaconChainOracle.sol/IBeaconChainOracle.json create mode 100644 out/interfaces/IDelegationManager.sol/IDelegationManager.json create mode 100644 out/interfaces/IETHPOSDeposit.sol/IETHPOSDeposit.json create mode 100644 out/interfaces/IEigenPod.sol/IEigenPod.json create mode 100644 out/interfaces/IEigenPodManager.sol/IEigenPodManager.json create mode 100644 out/interfaces/IPausable.sol/IPausable.json create mode 100644 out/interfaces/IPauserRegistry.sol/IPauserRegistry.json create mode 100644 out/interfaces/ISignatureUtils.sol/ISignatureUtils.json create mode 100644 out/interfaces/ISlasher.sol/ISlasher.json create mode 100644 out/interfaces/IStrategy.sol/IStrategy.json create mode 100644 out/interfaces/IStrategyManager.sol/IStrategyManager.json create mode 100644 out/libraries/BeaconChainProofs.sol/BeaconChainProofs.json create mode 100644 out/libraries/Endian.sol/Endian.json create mode 100644 out/libraries/Merkle.sol/Merkle.json create mode 100644 out/test.sol/DSTest.json create mode 100644 out/test.sol/Test.json create mode 100644 out/utils/Context.sol/Context.json create mode 100644 src/examples/MetaCoin.sol create mode 100644 src/examples/MetaCoinWithRateLimit.sol diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json new file mode 100644 index 00000000..c7572c27 --- /dev/null +++ b/cache/solidity-files-cache.json @@ -0,0 +1 @@ +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"lastModificationDate":1728950725304,"contentHash":"b6bd23bf19e90b771337037706470933","sourceName":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"IBeacon":{"0.8.12":{"path":"beacon/IBeacon.sol/IBeacon.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"lastModificationDate":1728950725306,"contentHash":"af7bd64e1cfefbf6cb07f2adc1a25392","sourceName":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol"],"versionRequirement":"^0.8.0","artifacts":{"ERC20":{"0.8.12":{"path":"ERC20.sol/ERC20.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"lastModificationDate":1728950725306,"contentHash":"ad7c2d0af148c8f9f097d65deeb4da6b","sourceName":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"IERC20":{"0.8.12":{"path":"ERC20/IERC20.sol/IERC20.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"lastModificationDate":1728950725306,"contentHash":"909ab67fc5c25033fe6cd364f8c056f9","sourceName":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"],"versionRequirement":"^0.8.0","artifacts":{"IERC20Metadata":{"0.8.12":{"path":"IERC20Metadata.sol/IERC20Metadata.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1728950725309,"contentHash":"5f2c5c4b6af2dd4551027144797bc8be","sourceName":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Context":{"0.8.12":{"path":"utils/Context.sol/Context.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"lastModificationDate":1728950725169,"contentHash":"fdade8b645a3c74f05e443b95794c394","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol"],"versionRequirement":">=0.5.0","artifacts":{"IAVSDirectory":{"0.8.12":{"path":"IAVSDirectory.sol/IAVSDirectory.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"lastModificationDate":1728950725169,"contentHash":"eb38be7423f8db5d4a406cad107a7503","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IBeaconChainOracle":{"0.8.12":{"path":"interfaces/IBeaconChainOracle.sol/IBeaconChainOracle.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"lastModificationDate":1728950725169,"contentHash":"ab1b7075d1859f41c6097df992d0191a","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":">=0.5.0","artifacts":{"IDelegationManager":{"0.8.12":{"path":"interfaces/IDelegationManager.sol/IDelegationManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"lastModificationDate":1728950725072,"contentHash":"4f6da7ff2685909ce76b5aff81db1b99","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IETHPOSDeposit":{"0.8.12":{"path":"interfaces/IETHPOSDeposit.sol/IETHPOSDeposit.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"lastModificationDate":1728950725169,"contentHash":"73d8f1b9a826d263ac1ca19929f9f59a","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":">=0.5.0","artifacts":{"IEigenPod":{"0.8.12":{"path":"interfaces/IEigenPod.sol/IEigenPod.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"lastModificationDate":1728950725170,"contentHash":"39000c3b5105abe5c45396275aa58daf","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":">=0.5.0","artifacts":{"IEigenPodManager":{"0.8.12":{"path":"interfaces/IEigenPodManager.sol/IEigenPodManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"lastModificationDate":1728950725170,"contentHash":"d66c456cc3a0dc8eb0ad3eecb1f6d4d6","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol"],"versionRequirement":">=0.5.0","artifacts":{"IPausable":{"0.8.12":{"path":"interfaces/IPausable.sol/IPausable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"lastModificationDate":1728950725170,"contentHash":"18f3560026f04f20a6228823740809b7","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IPauserRegistry":{"0.8.12":{"path":"interfaces/IPauserRegistry.sol/IPauserRegistry.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"lastModificationDate":1728950725170,"contentHash":"c739f2bb9faabac0b3a8d026cca56762","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"ISignatureUtils":{"0.8.12":{"path":"interfaces/ISignatureUtils.sol/ISignatureUtils.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"lastModificationDate":1728950725170,"contentHash":"fdf20cb694581a20b3df160ecb9efa93","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":">=0.5.0","artifacts":{"ISlasher":{"0.8.12":{"path":"interfaces/ISlasher.sol/ISlasher.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"lastModificationDate":1728950725170,"contentHash":"f68b7357db40710844ba8e9f7faf3d21","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"],"versionRequirement":">=0.5.0","artifacts":{"IStrategy":{"0.8.12":{"path":"interfaces/IStrategy.sol/IStrategy.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"lastModificationDate":1728950725170,"contentHash":"a564ed47bdc3fa9c59b35de18a2fb76f","sourceName":"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":">=0.5.0","artifacts":{"IStrategyManager":{"0.8.12":{"path":"interfaces/IStrategyManager.sol/IStrategyManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"lastModificationDate":1728950725171,"contentHash":"ad76779e4ae577145a5935acdae920a6","sourceName":"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":"^0.8.0","artifacts":{"BeaconChainProofs":{"0.8.12":{"path":"libraries/BeaconChainProofs.sol/BeaconChainProofs.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"lastModificationDate":1728950725171,"contentHash":"eda61a3417176c2532a5a62839e1ed99","sourceName":"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Endian":{"0.8.12":{"path":"libraries/Endian.sol/Endian.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"lastModificationDate":1728950725171,"contentHash":"f22a8f4e0382e62b9c5cf53e308d8212","sourceName":"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Merkle":{"0.8.12":{"path":"libraries/Merkle.sol/Merkle.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/lib/ds-test/src/test.sol":{"lastModificationDate":1728950812543,"contentHash":"9febff9d09f18af5306669dc276c4c43","sourceName":"lib/forge-std/lib/ds-test/src/test.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"DSTest":{"0.8.12":{"path":"test.sol/DSTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/Base.sol":{"lastModificationDate":1728950811974,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.12":{"path":"Base.sol/CommonBase.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"ScriptBase":{"0.8.12":{"path":"Base.sol/ScriptBase.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"TestBase":{"0.8.12":{"path":"Base.sol/TestBase.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1728950812001,"contentHash":"6cc2858240bcd443debbbf075490e325","sourceName":"lib/forge-std/src/StdAssertions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/StdMath.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.12":{"path":"StdAssertions.sol/StdAssertions.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1728950812001,"contentHash":"9c76820952c8f5e2fc02f872dc3afeb4","sourceName":"lib/forge-std/src/StdChains.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.12":{"path":"StdChains.sol/StdChains.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1728950812001,"contentHash":"24785368b480beef5cd536afd144d5cb","sourceName":"lib/forge-std/src/StdCheats.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.12":{"path":"StdCheats.sol/StdCheats.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"StdCheatsSafe":{"0.8.12":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1728950811975,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.12":{"path":"StdError.sol/stdError.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1728950812001,"contentHash":"12c06010ec43ce935ed209d5aca30828","sourceName":"lib/forge-std/src/StdInvariant.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.12":{"path":"StdInvariant.sol/StdInvariant.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1728950812001,"contentHash":"2e1d13674e152408867795362d833c24","sourceName":"lib/forge-std/src/StdJson.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.12":{"path":"StdJson.sol/stdJson.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1728950811975,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.12":{"path":"StdMath.sol/stdMath.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1728950812001,"contentHash":"3cb9868082df39a53927db09dbc21f23","sourceName":"lib/forge-std/src/StdStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.12":{"path":"StdStorage.sol/stdStorage.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"stdStorageSafe":{"0.8.12":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1728950812002,"contentHash":"820e6f6b7704f0c980fae604b1e34b18","sourceName":"lib/forge-std/src/StdStyle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.12":{"path":"StdStyle.sol/StdStyle.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1728950812002,"contentHash":"dd923493ddd9f98777687205cfe9d646","sourceName":"lib/forge-std/src/StdUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IMulticall3.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.12":{"path":"StdUtils.sol/StdUtils.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1728950812002,"contentHash":"bc9d74a0c612e1c2b66cca2973bcc803","sourceName":"lib/forge-std/src/Test.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.12":{"path":"Test.sol/Test.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1728950812002,"contentHash":"93cbedbadc52c20145ebbfa27ce148c4","sourceName":"lib/forge-std/src/Vm.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.12":{"path":"Vm.sol/Vm.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"VmSafe":{"0.8.12":{"path":"Vm.sol/VmSafe.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1728950812002,"contentHash":"100b8a33b917da1147740d7ab8b0ded3","sourceName":"lib/forge-std/src/console.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.12":{"path":"console.sol/console.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1728950812002,"contentHash":"491ca717c1915995e78cc361485a3067","sourceName":"lib/forge-std/src/console2.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console2":{"0.8.12":{"path":"console2.sol/console2.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1728950811976,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.12":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"lastModificationDate":1728950411119,"contentHash":"e436cea06129be2c73cda4b1acc848b5","sourceName":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Context.sol"],"versionRequirement":"^0.8.0","artifacts":{"Ownable":{"0.8.12":{"path":"Ownable.sol/Ownable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"lastModificationDate":1728950411128,"contentHash":"8fe867b95c856b204f954a1910e28a1e","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"IERC1271":{"0.8.12":{"path":"IERC1271.sol/IERC1271.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"lastModificationDate":1728950411130,"contentHash":"2858d98e74e67987ec81b39605230b74","sourceName":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"IERC1822Proxiable":{"0.8.12":{"path":"draft-IERC1822.sol/IERC1822Proxiable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"lastModificationDate":1728950411137,"contentHash":"3fc3c7c0a2956f36e766691bb9473b06","sourceName":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol"],"versionRequirement":"^0.8.0","artifacts":{"ERC1967Proxy":{"0.8.12":{"path":"ERC1967Proxy.sol/ERC1967Proxy.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"lastModificationDate":1728950411137,"contentHash":"6baa887a798e95b14f34e093f117e9b2","sourceName":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol"],"versionRequirement":"^0.8.2","artifacts":{"ERC1967Upgrade":{"0.8.12":{"path":"ERC1967Upgrade.sol/ERC1967Upgrade.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"lastModificationDate":1728950411137,"contentHash":"40b3d81a836d50ff47e03893dcaaf204","sourceName":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Proxy":{"0.8.12":{"path":"Proxy.sol/Proxy.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"lastModificationDate":1728950411137,"contentHash":"b6bd23bf19e90b771337037706470933","sourceName":"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"IBeacon":{"0.8.12":{"path":"IBeacon.sol/IBeacon.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"lastModificationDate":1728950411138,"contentHash":"a947492251ac15d6bfd899c9fdb4d82b","sourceName":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol"],"versionRequirement":"^0.8.0","artifacts":{"ProxyAdmin":{"0.8.12":{"path":"ProxyAdmin.sol/ProxyAdmin.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"lastModificationDate":1728950411138,"contentHash":"ea48b4a63fd733eec048191be006daa8","sourceName":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol"],"versionRequirement":"^0.8.0","artifacts":{"TransparentUpgradeableProxy":{"0.8.12":{"path":"TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"lastModificationDate":1728950411140,"contentHash":"ad7c2d0af148c8f9f097d65deeb4da6b","sourceName":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"IERC20":{"0.8.12":{"path":"IERC20.sol/IERC20.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"lastModificationDate":1728950411143,"contentHash":"c476b3895a94798b88a4bb97399e6dfe","sourceName":"lib/openzeppelin-contracts/contracts/utils/Address.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.1","artifacts":{"Address":{"0.8.12":{"path":"Address.sol/Address.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"lastModificationDate":1728950411144,"contentHash":"5f2c5c4b6af2dd4551027144797bc8be","sourceName":"lib/openzeppelin-contracts/contracts/utils/Context.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Context":{"0.8.12":{"path":"Context.sol/Context.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"lastModificationDate":1728950411144,"contentHash":"f993f8f50186952a59ee5e3a30b68222","sourceName":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"StorageSlot":{"0.8.12":{"path":"StorageSlot.sol/StorageSlot.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"lastModificationDate":1728950411144,"contentHash":"cf46906c4035f51639a22265066a9e78","sourceName":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"Strings":{"0.8.12":{"path":"Strings.sol/Strings.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"lastModificationDate":1728950411144,"contentHash":"1dfb7cf7c7e2edae73403d50a59cc967","sourceName":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/utils/Strings.sol"],"versionRequirement":"^0.8.0","artifacts":{"ECDSA":{"0.8.12":{"path":"ECDSA.sol/ECDSA.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"lastModificationDate":1728950447630,"contentHash":"403ce8273abde646bff81558ddf512ad","sourceName":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol"],"versionRequirement":"^0.8.0","artifacts":{"OwnableUpgradeable":{"0.8.12":{"path":"OwnableUpgradeable.sol/OwnableUpgradeable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"lastModificationDate":1728950447645,"contentHash":"b98e2f3a856e6e7f2106fb919bacab9e","sourceName":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol"],"versionRequirement":"^0.8.2","artifacts":{"Initializable":{"0.8.12":{"path":"Initializable.sol/Initializable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"lastModificationDate":1728950447651,"contentHash":"d42e87f4fba2b03ab4d3c14cb53d0c51","sourceName":"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.1","artifacts":{"AddressUpgradeable":{"0.8.12":{"path":"AddressUpgradeable.sol/AddressUpgradeable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"lastModificationDate":1728950447651,"contentHash":"6200b84950eb05b4a92a39fd1d6e0f9b","sourceName":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol"],"versionRequirement":"^0.8.0","artifacts":{"ContextUpgradeable":{"0.8.12":{"path":"ContextUpgradeable.sol/ContextUpgradeable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/solmate/src/utils/FixedPointMathLib.sol":{"lastModificationDate":1728950512392,"contentHash":"3945241174f1c8fdcd51c2571f8ec92e","sourceName":"lib/solmate/src/utils/FixedPointMathLib.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.8.0","artifacts":{"FixedPointMathLib":{"0.8.12":{"path":"FixedPointMathLib.sol/FixedPointMathLib.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/utils/SafeCast.sol":{"lastModificationDate":1728950852499,"contentHash":"afa93038edef537245e50bdb913a794f","sourceName":"lib/utils/SafeCast.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"SafeCast":{"0.8.12":{"path":"SafeCast.sol/SafeCast.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"lastModificationDate":1728950583896,"contentHash":"22f251436dd092764e3d07a8cdea6f40","sourceName":"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol"],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3Pool":{"0.8.12":{"path":"IUniswapV3Pool.sol/IUniswapV3Pool.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"lastModificationDate":1728950583862,"contentHash":"83d338eb1394008c808a20ac7c5bab0c","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolActions":{"0.8.12":{"path":"IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"lastModificationDate":1728950583862,"contentHash":"25b71180ec9f5132a158334971ee2ace","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolDerivedState":{"0.8.12":{"path":"IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"lastModificationDate":1728950583896,"contentHash":"fd36e4ca901988568ec1f3c5d4f58f84","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolErrors":{"0.8.12":{"path":"IUniswapV3PoolErrors.sol/IUniswapV3PoolErrors.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"lastModificationDate":1728950583862,"contentHash":"05abb59ec113db1046f7dadc78bb297b","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolEvents":{"0.8.12":{"path":"IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"lastModificationDate":1728950583862,"contentHash":"e236e09a9d654fb2f20a6da5dba2bd2f","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolImmutables":{"0.8.12":{"path":"IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"lastModificationDate":1728950583862,"contentHash":"1b06ecc79e75f836c446ccf286e671e4","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolOwnerActions":{"0.8.12":{"path":"IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"lastModificationDate":1728950583896,"contentHash":"006c2457f96a386a69a8ac5e70838d2c","sourceName":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"IUniswapV3PoolState":{"0.8.12":{"path":"IUniswapV3PoolState.sol/IUniswapV3PoolState.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/libraries/FullMath.sol":{"lastModificationDate":1728950583896,"contentHash":"2ca3e14806bc8bf648267136cffef969","sourceName":"lib/v3-core/contracts/libraries/FullMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"FullMath":{"0.8.12":{"path":"FullMath.sol/FullMath.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-core/contracts/libraries/TickMath.sol":{"lastModificationDate":1728950583897,"contentHash":"bb9c21008aef589c6fb567344fb08942","sourceName":"lib/v3-core/contracts/libraries/TickMath.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"^0.8.0","artifacts":{"TickMath":{"0.8.12":{"path":"TickMath.sol/TickMath.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-periphery/contracts/libraries/OracleLibrary.sol":{"lastModificationDate":1728950655597,"contentHash":"fa2168c46ea95c778bf055b4f7ad3d54","sourceName":"lib/v3-periphery/contracts/libraries/OracleLibrary.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","lib/v3-core/contracts/libraries/FullMath.sol","lib/v3-core/contracts/libraries/TickMath.sol"],"versionRequirement":">=0.5.0, <0.9.0","artifacts":{"OracleLibrary":{"0.8.12":{"path":"OracleLibrary.sol/OracleLibrary.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"lib/v3-periphery/contracts/libraries/PoolAddress.sol":{"lastModificationDate":1728950655597,"contentHash":"d928327a13dd928fa88273ef22539bef","sourceName":"lib/v3-periphery/contracts/libraries/PoolAddress.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":">=0.5.0","artifacts":{"PoolAddress":{"0.8.12":{"path":"PoolAddress.sol/PoolAddress.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/PriceAggregatorUniV3.sol":{"lastModificationDate":1728943315050,"contentHash":"a56f0f234ff5911c5b6f7991bf289bcb","sourceName":"src/PriceAggregatorUniV3.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/utils/SafeCast.sol","lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","lib/v3-core/contracts/libraries/FullMath.sol","lib/v3-core/contracts/libraries/TickMath.sol","lib/v3-periphery/contracts/libraries/OracleLibrary.sol","lib/v3-periphery/contracts/libraries/PoolAddress.sol","src/interfaces/IPriceAggregator.sol"],"versionRequirement":"=0.8.12","artifacts":{"PriceAggregatorUniV3":{"0.8.12":{"path":"PriceAggregatorUniV3.sol/PriceAggregatorUniV3.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/ServiceManager.sol":{"lastModificationDate":1728943315051,"contentHash":"1c3022d3b5abcd43fbb3ba697b388687","sourceName":"src/ServiceManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol"],"versionRequirement":"=0.8.12","artifacts":{"ServiceManager":{"0.8.12":{"path":"ServiceManager.sol/ServiceManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/examples/MetaCoin.sol":{"lastModificationDate":1728950883462,"contentHash":"5500f25f5914fd5b5842c654e51e1df7","sourceName":"src/examples/MetaCoin.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/mixins/PredicateClient.sol"],"versionRequirement":"=0.8.12","artifacts":{"MetaCoin":{"0.8.12":{"path":"MetaCoin.sol/MetaCoin.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/examples/MetaCoinWithRateLimit.sol":{"lastModificationDate":1728950883462,"contentHash":"729b52c6ae21d636ba614c454da5ee18","sourceName":"src/examples/MetaCoinWithRateLimit.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/solmate/src/utils/FixedPointMathLib.sol","src/interfaces/IPriceAggregator.sol","src/interfaces/IRateLimiter.sol","src/mixins/RateLimiter.sol"],"versionRequirement":"=0.8.12","artifacts":{"MetaCoinWithRateLimit":{"0.8.12":{"path":"MetaCoinWithRateLimit.sol/MetaCoinWithRateLimit.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/interfaces/IPredicateClient.sol":{"lastModificationDate":1728943315051,"contentHash":"a88369378ed7162fa79121a633e55dd9","sourceName":"src/interfaces/IPredicateClient.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"IPredicateClient":{"0.8.12":{"path":"IPredicateClient.sol/IPredicateClient.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/interfaces/IPriceAggregator.sol":{"lastModificationDate":1728943315052,"contentHash":"ff7ab46ffb2e0c17f6b8d97adc76c9aa","sourceName":"src/interfaces/IPriceAggregator.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"IPriceAggregator":{"0.8.12":{"path":"IPriceAggregator.sol/IPriceAggregator.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/interfaces/IRateLimiter.sol":{"lastModificationDate":1728943315052,"contentHash":"3e506b12b554e795560f8a151c4d8f70","sourceName":"src/interfaces/IRateLimiter.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"IRateLimiter":{"0.8.12":{"path":"IRateLimiter.sol/IRateLimiter.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/interfaces/IServiceManager.sol":{"lastModificationDate":1728943315052,"contentHash":"62bb98d3cbbec9d1cc08224f9d1f4cb1","sourceName":"src/interfaces/IServiceManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol"],"versionRequirement":"=0.8.12","artifacts":{"IServiceManager":{"0.8.12":{"path":"IServiceManager.sol/IServiceManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/interfaces/IStakeRegistry.sol":{"lastModificationDate":1728943315052,"contentHash":"210919f4bdbea01352442428b3244cba","sourceName":"src/interfaces/IStakeRegistry.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol"],"versionRequirement":"=0.8.12","artifacts":{"IStakeRegistry":{"0.8.12":{"path":"IStakeRegistry.sol/IStakeRegistry.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/mixins/PredicateClient.sol":{"lastModificationDate":1728943315052,"contentHash":"e0527348d3910b9ddd3dd2c569d852f8","sourceName":"src/mixins/PredicateClient.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"PredicateClient":{"0.8.12":{"path":"PredicateClient.sol/PredicateClient.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"src/mixins/RateLimiter.sol":{"lastModificationDate":1728943315052,"contentHash":"24d2f3e0e216f723b0ae7007464b7d79","sourceName":"src/mixins/RateLimiter.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/solmate/src/utils/FixedPointMathLib.sol","src/interfaces/IPriceAggregator.sol","src/interfaces/IRateLimiter.sol"],"versionRequirement":"=0.8.12","artifacts":{"RateLimiter":{"0.8.12":{"path":"RateLimiter.sol/RateLimiter.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/Client.t.sol":{"lastModificationDate":1728943315052,"contentHash":"82f8b3d1da27597e2d91efc139c21e8b","sourceName":"test/Client.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/ServiceManagerSetup.sol","test/helpers/utility/TestStorage.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockClientTest":{"0.8.12":{"path":"Client.t.sol/MockClientTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/Ownership.t.sol":{"lastModificationDate":1728943315053,"contentHash":"a42a5436707dfb4a80a771cef5dba5e8","sourceName":"test/Ownership.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/ServiceManagerSetup.sol","test/helpers/utility/TestStorage.sol"],"versionRequirement":"=0.8.12","artifacts":{"OwnershipClientTest":{"0.8.12":{"path":"Ownership.t.sol/OwnershipClientTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"OwnershipServiceManagerTest":{"0.8.12":{"path":"Ownership.t.sol/OwnershipServiceManagerTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/PriceAggregatorUniV3.t.sol":{"lastModificationDate":1728943315053,"contentHash":"8979218aaabea715840e998c26431742","sourceName":"test/PriceAggregatorUniV3.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/utils/SafeCast.sol","lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","lib/v3-core/contracts/libraries/FullMath.sol","lib/v3-core/contracts/libraries/TickMath.sol","lib/v3-periphery/contracts/libraries/OracleLibrary.sol","lib/v3-periphery/contracts/libraries/PoolAddress.sol","src/PriceAggregatorUniV3.sol","src/interfaces/IPriceAggregator.sol","test/mocks/MockPriceAggregator.sol","test/mocks/MockUniswapV3Pool.sol"],"versionRequirement":"^0.8.12","artifacts":{"OwnershipPriceAggregatorUniV3Test":{"0.8.12":{"path":"PriceAggregatorUniV3.t.sol/OwnershipPriceAggregatorUniV3Test.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}},"PriceAggregatorUniV3Test":{"0.8.12":{"path":"PriceAggregatorUniV3.t.sol/PriceAggregatorUniV3Test.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/RateLimiter.t.sol":{"lastModificationDate":1728943315053,"contentHash":"1a2e4a0f06ce7500c1f2850d9082a3a2","sourceName":"test/RateLimiter.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/solmate/src/utils/FixedPointMathLib.sol","src/interfaces/IPriceAggregator.sol","src/interfaces/IRateLimiter.sol","src/mixins/RateLimiter.sol","test/mocks/MockPriceAggregator.sol"],"versionRequirement":"^0.8.12","artifacts":{"RateLimiterTest":{"0.8.12":{"path":"RateLimiter.t.sol/RateLimiterTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/STMTest.t.sol":{"lastModificationDate":1728943315053,"contentHash":"7b169d016c5189f81a68fb7cbf899c74","sourceName":"test/STMTest.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/examples/MetaCoin.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/DummyToken.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/STMSetup.sol","test/helpers/utility/TestPrep.sol","test/helpers/utility/TestStorage.sol","test/helpers/utility/TestUtils.sol"],"versionRequirement":"=0.8.12","artifacts":{"STMTest":{"0.8.12":{"path":"STMTest.t.sol/STMTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/ServiceManager.t.sol":{"lastModificationDate":1728943315053,"contentHash":"ab291498b556c21b2be3e63f0f865a0c","sourceName":"test/ServiceManager.t.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/ServiceManagerSetup.sol","test/helpers/utility/TestPrep.sol","test/helpers/utility/TestStorage.sol","test/helpers/utility/TestUtils.sol"],"versionRequirement":"=0.8.12","artifacts":{"ServiceManagerTest":{"0.8.12":{"path":"ServiceManager.t.sol/ServiceManagerTest.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/DummyToken.sol":{"lastModificationDate":1728943315054,"contentHash":"cc3d63c625eaeb394ef2a12cf3d3d874","sourceName":"test/helpers/DummyToken.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol"],"versionRequirement":"=0.8.12","artifacts":{"DummyToken":{"0.8.12":{"path":"DummyToken.sol/DummyToken.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockClient.sol":{"lastModificationDate":1728943315054,"contentHash":"22892fb3ff692eaf3a9ec34dab04168c","sourceName":"test/helpers/MockClient.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/src/console.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/mixins/PredicateClient.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockClient":{"0.8.12":{"path":"MockClient.sol/MockClient.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockDelegationManager.sol":{"lastModificationDate":1728943315054,"contentHash":"8fdf8a47002a3fde18ee5de5f2e7028e","sourceName":"test/helpers/MockDelegationManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockDelegationManager":{"0.8.12":{"path":"MockDelegationManager.sol/MockDelegationManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockEigenPodManager.sol":{"lastModificationDate":1728943315055,"contentHash":"82f136119aaa8b9cb53f59fafbbc6157","sourceName":"test/helpers/MockEigenPodManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockEigenPodManager":{"0.8.12":{"path":"MockEigenPodManager.sol/MockEigenPodManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockProxy.sol":{"lastModificationDate":1728943315055,"contentHash":"908910fddeb2d9bd88f27cd0ffa4cb4b","sourceName":"test/helpers/MockProxy.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","test/helpers/MockProxyAdmin.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockProxy":{"0.8.12":{"path":"MockProxy.sol/MockProxy.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockProxyAdmin.sol":{"lastModificationDate":1728943315055,"contentHash":"f809c88fe20412353339812c0fb94054","sourceName":"test/helpers/MockProxyAdmin.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockProxyAdmin":{"0.8.12":{"path":"MockProxyAdmin.sol/MockProxyAdmin.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockStakeRegistry.sol":{"lastModificationDate":1728943315055,"contentHash":"cf00a0c3e6f2f08798a606ab1a6a16d3","sourceName":"test/helpers/MockStakeRegistry.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockStakeRegistry":{"0.8.12":{"path":"MockStakeRegistry.sol/MockStakeRegistry.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/MockStrategyManager.sol":{"lastModificationDate":1728943315055,"contentHash":"c3e96727f68c4698d3e2acfd55076fb9","sourceName":"test/helpers/MockStrategyManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockStrategyManager":{"0.8.12":{"path":"MockStrategyManager.sol/MockStrategyManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"lastModificationDate":1728943315056,"contentHash":"551c8e3d69e2beaae792a955a517f825","sourceName":"test/helpers/eigenlayer/BeaconChainProofs.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol"],"versionRequirement":"=0.8.12","artifacts":{"BeaconChainProofs":{"0.8.12":{"path":"BeaconChainProofs.sol/BeaconChainProofs.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/DelegationManager.sol":{"lastModificationDate":1728943315056,"contentHash":"c23c0448411038b8c61b9e5d1f334fcd","sourceName":"test/helpers/eigenlayer/DelegationManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"DelegationManager":{"0.8.12":{"path":"DelegationManager.sol/DelegationManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"lastModificationDate":1728943315056,"contentHash":"14322425382cbca3b3ed693bc63dd96e","sourceName":"test/helpers/eigenlayer/DelegationManagerStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"DelegationManagerStorage":{"0.8.12":{"path":"DelegationManagerStorage.sol/DelegationManagerStorage.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"lastModificationDate":1728943315056,"contentHash":"08a257c98da6a8e13c0b963cdd327e19","sourceName":"test/helpers/eigenlayer/EIP1271SignatureUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol"],"versionRequirement":"=0.8.12","artifacts":{"EIP1271SignatureUtils":{"0.8.12":{"path":"EIP1271SignatureUtils.sol/EIP1271SignatureUtils.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/Endian.sol":{"lastModificationDate":1728943315057,"contentHash":"e8cb240561f2527107dae059b81d3d49","sourceName":"test/helpers/eigenlayer/Endian.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"Endian":{"0.8.12":{"path":"Endian.sol/Endian.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/Merkle.sol":{"lastModificationDate":1728943315057,"contentHash":"2f56cf5a41ab1c52f4b55368681186ae","sourceName":"test/helpers/eigenlayer/Merkle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"Merkle":{"0.8.12":{"path":"Merkle.sol/Merkle.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/Pausable.sol":{"lastModificationDate":1728943315057,"contentHash":"eefc4ce3d0442568195c0ed3b4c3e86e","sourceName":"test/helpers/eigenlayer/Pausable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol"],"versionRequirement":"=0.8.12","artifacts":{"Pausable":{"0.8.12":{"path":"Pausable.sol/Pausable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"lastModificationDate":1728943315057,"contentHash":"6e6042cf972881a6d1e1c8a6d6f4d30e","sourceName":"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"IBeaconChainOracle":{"0.8.12":{"path":"IBeaconChainOracle.sol/IBeaconChainOracle.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"lastModificationDate":1728943315058,"contentHash":"858e925789f51d7156ce570cd05c14ca","sourceName":"test/helpers/eigenlayer/interfaces/IDelegationManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"IDelegationManager":{"0.8.12":{"path":"IDelegationManager.sol/IDelegationManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"lastModificationDate":1728943315058,"contentHash":"7ebe35bcbb5c3ae01d69ca155f015d5b","sourceName":"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"IETHPOSDeposit":{"0.8.12":{"path":"IETHPOSDeposit.sol/IETHPOSDeposit.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"lastModificationDate":1728943315058,"contentHash":"b5e64d0f4db8f34c545e33a653315674","sourceName":"test/helpers/eigenlayer/interfaces/IEigenPod.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"IEigenPod":{"0.8.12":{"path":"IEigenPod.sol/IEigenPod.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"lastModificationDate":1728943315058,"contentHash":"59b9769c589bd8b5eb7960126b88c6b0","sourceName":"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"IEigenPodManager":{"0.8.12":{"path":"IEigenPodManager.sol/IEigenPodManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"lastModificationDate":1728943315059,"contentHash":"c11ecb9ee6ca1ddd41ee7fd738e9b91b","sourceName":"test/helpers/eigenlayer/interfaces/IPausable.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["test/helpers/eigenlayer/interfaces/IPauserRegistry.sol"],"versionRequirement":"=0.8.12","artifacts":{"IPausable":{"0.8.12":{"path":"IPausable.sol/IPausable.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"lastModificationDate":1728943315059,"contentHash":"384f48c1c6e33637c2e67e094d82d149","sourceName":"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"IPauserRegistry":{"0.8.12":{"path":"IPauserRegistry.sol/IPauserRegistry.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"lastModificationDate":1728943315059,"contentHash":"b207b17170e0b1d16c3c7ce41c160c0d","sourceName":"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":[],"versionRequirement":"=0.8.12","artifacts":{"ISignatureUtils":{"0.8.12":{"path":"ISignatureUtils.sol/ISignatureUtils.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"lastModificationDate":1728943315059,"contentHash":"cdf0b0319692d073c43797f28275c216","sourceName":"test/helpers/eigenlayer/interfaces/ISlasher.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"ISlasher":{"0.8.12":{"path":"ISlasher.sol/ISlasher.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"lastModificationDate":1728943315059,"contentHash":"85e9446b3a821c6c33c061d5de5867cb","sourceName":"test/helpers/eigenlayer/interfaces/IStrategy.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"],"versionRequirement":"=0.8.12","artifacts":{"IStrategy":{"0.8.12":{"path":"IStrategy.sol/IStrategy.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"lastModificationDate":1728943315060,"contentHash":"cb4906b87b1a3e711379ebbdef4c035c","sourceName":"test/helpers/eigenlayer/interfaces/IStrategyManager.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"IStrategyManager":{"0.8.12":{"path":"IStrategyManager.sol/IStrategyManager.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/utility/STMSetup.sol":{"lastModificationDate":1728943315060,"contentHash":"f1dda3e158cfba05270a75887ff11434","sourceName":"test/helpers/utility/STMSetup.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/examples/MetaCoin.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/DummyToken.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/TestStorage.sol"],"versionRequirement":"=0.8.12","artifacts":{"STMSetup":{"0.8.12":{"path":"STMSetup.sol/STMSetup.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/utility/ServiceManagerSetup.sol":{"lastModificationDate":1728943315060,"contentHash":"89e534abbb81f70b5f60b847c60b0c2a","sourceName":"test/helpers/utility/ServiceManagerSetup.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/TestStorage.sol"],"versionRequirement":"=0.8.12","artifacts":{"ServiceManagerSetup":{"0.8.12":{"path":"ServiceManagerSetup.sol/ServiceManagerSetup.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/utility/TestPrep.sol":{"lastModificationDate":1728943315060,"contentHash":"0af40243db861bea1a6a93bf3abc330b","sourceName":"test/helpers/utility/TestPrep.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol","test/helpers/utility/TestStorage.sol"],"versionRequirement":"=0.8.12","artifacts":{"TestPrep":{"0.8.12":{"path":"TestPrep.sol/TestPrep.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/utility/TestStorage.sol":{"lastModificationDate":1728943315060,"contentHash":"ad51f12c7aa246197d0ce4df914b029e","sourceName":"test/helpers/utility/TestStorage.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","lib/forge-std/lib/ds-test/src/test.sol","lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/openzeppelin-contracts/contracts/access/Ownable.sol","lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/openzeppelin-contracts/contracts/utils/Address.sol","lib/openzeppelin-contracts/contracts/utils/Context.sol","lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","lib/openzeppelin-contracts/contracts/utils/Strings.sol","lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","src/ServiceManager.sol","src/interfaces/IPredicateClient.sol","src/interfaces/IServiceManager.sol","src/interfaces/IStakeRegistry.sol","src/mixins/PredicateClient.sol","test/helpers/MockClient.sol","test/helpers/MockDelegationManager.sol","test/helpers/MockEigenPodManager.sol","test/helpers/MockProxy.sol","test/helpers/MockProxyAdmin.sol","test/helpers/MockStakeRegistry.sol","test/helpers/MockStrategyManager.sol","test/helpers/eigenlayer/BeaconChainProofs.sol","test/helpers/eigenlayer/DelegationManager.sol","test/helpers/eigenlayer/DelegationManagerStorage.sol","test/helpers/eigenlayer/EIP1271SignatureUtils.sol","test/helpers/eigenlayer/Endian.sol","test/helpers/eigenlayer/Merkle.sol","test/helpers/eigenlayer/Pausable.sol","test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","test/helpers/eigenlayer/interfaces/IDelegationManager.sol","test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","test/helpers/eigenlayer/interfaces/IEigenPod.sol","test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","test/helpers/eigenlayer/interfaces/IPausable.sol","test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","test/helpers/eigenlayer/interfaces/ISlasher.sol","test/helpers/eigenlayer/interfaces/IStrategy.sol","test/helpers/eigenlayer/interfaces/IStrategyManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"TestStorage":{"0.8.12":{"path":"TestStorage.sol/TestStorage.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/helpers/utility/TestUtils.sol":{"lastModificationDate":1728943315060,"contentHash":"c374a1c15b03465156af493d1d917e2d","sourceName":"test/helpers/utility/TestUtils.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","src/interfaces/IServiceManager.sol"],"versionRequirement":"=0.8.12","artifacts":{"TestUtils":{"0.8.12":{"path":"TestUtils.sol/TestUtils.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/mocks/MockPriceAggregator.sol":{"lastModificationDate":1728943315060,"contentHash":"e17e3a4d250336dc50ea68cb7b140e4d","sourceName":"test/mocks/MockPriceAggregator.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["src/interfaces/IPriceAggregator.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockPriceAggregator":{"0.8.12":{"path":"MockPriceAggregator.sol/MockPriceAggregator.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true},"test/mocks/MockUniswapV3Pool.sol":{"lastModificationDate":1728943315060,"contentHash":"32280d0f73f24af378b54b1c59dd4b84","sourceName":"test/mocks/MockUniswapV3Pool.sol","compilerSettings":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"evmVersion":"london","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"london","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}},"imports":["lib/v3-periphery/contracts/libraries/PoolAddress.sol"],"versionRequirement":"=0.8.12","artifacts":{"MockUniswapV3Pool":{"0.8.12":{"path":"MockUniswapV3Pool.sol/MockUniswapV3Pool.json","build_id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4"}}},"seenByCompiler":true}},"builds":["0536e4cd3e0a76c3f5fbf0887dc6f9d4"]} \ No newline at end of file diff --git a/lib/utils/SafeCast.sol b/lib/utils/SafeCast.sol new file mode 100644 index 00000000..e065a27e --- /dev/null +++ b/lib/utils/SafeCast.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity =0.8.12; + +/// @title Safe casting methods +/// @notice Contains methods for safely casting between types +/// Adapted from UniswapV3: https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/libraries/SafeCast.sol +library SafeCast { + /// @notice Cast a uint256 to a uint128, revert on overflow + /// @param y The uint256 to be downcasted + /// @return z The downcasted integer, now type uint128 + function toUint128(uint256 y) internal pure returns (uint128 z) { + require((z = uint128(y)) == y, "SafeCast: value doesn't fit in 128 bits"); + } + + /// @notice Cast a uint256 to a uint32, revert on overflow + /// @param y The uint256 to be downcasted + /// @return z The downcasted integer, now type uint32 + function toUint32(uint256 y) internal pure returns (uint32 z) { + require((z = uint32(y)) == y, "SafeCast: value doesn't fit in 32 bits"); + } +} diff --git a/out/Address.sol/Address.json b/out/Address.sol/Address.json new file mode 100644 index 00000000..3359be34 --- /dev/null +++ b/out/Address.sol/Address.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d47a0c1362f575d8cbf5bdb3d91d9ff928a35f925f79cef5883350dcc9e4d29a64736f6c634300080c0033","sourceMap":"194:8111:51:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:51;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d47a0c1362f575d8cbf5bdb3d91d9ff928a35f925f79cef5883350dcc9e4d29a64736f6c634300080c0033","sourceMap":"194:8111:51:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":"Address"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"}},"version":1},"id":51} \ No newline at end of file diff --git a/out/AddressUpgradeable.sol/AddressUpgradeable.json b/out/AddressUpgradeable.sol/AddressUpgradeable.json new file mode 100644 index 00000000..370663e1 --- /dev/null +++ b/out/AddressUpgradeable.sol/AddressUpgradeable.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e89cd8a6777ce5d8903758f1d83781dde066b97ea3e7e9819daa94c2c0fdb8f64736f6c634300080c0033","sourceMap":"194:7172:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:7172:39;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e89cd8a6777ce5d8903758f1d83781dde066b97ea3e7e9819daa94c2c0fdb8f64736f6c634300080c0033","sourceMap":"194:7172:39:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":"AddressUpgradeable"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"}},"version":1},"id":39} \ No newline at end of file diff --git a/out/Base.sol/CommonBase.json b/out/Base.sol/CommonBase.json new file mode 100644 index 00000000..5a9d0262 --- /dev/null +++ b/out/Base.sol/CommonBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/out/Base.sol/ScriptBase.json b/out/Base.sol/ScriptBase.json new file mode 100644 index 00000000..cecc6a2d --- /dev/null +++ b/out/Base.sol/ScriptBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/out/Base.sol/TestBase.json b/out/Base.sol/TestBase.json new file mode 100644 index 00000000..378f472f --- /dev/null +++ b/out/Base.sol/TestBase.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Base.sol":"TestBase"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/out/BeaconChainProofs.sol/BeaconChainProofs.json b/out/BeaconChainProofs.sol/BeaconChainProofs.json new file mode 100644 index 00000000..e7d8a23a --- /dev/null +++ b/out/BeaconChainProofs.sol/BeaconChainProofs.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x607c610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea264697066735822122021a587b39cedf7b44a99a010a625c577ae54febfd9b0045ad4d472508fbb260564736f6c634300080c0033","sourceMap":"522:18715:95:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;522:18715:95;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea264697066735822122021a587b39cedf7b44a99a010a625c577ae54febfd9b0045ad4d472508fbb260564736f6c634300080c0033","sourceMap":"522:18715:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;19210:25;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"test()":"f8a8fd6d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/BeaconChainProofs.sol\":\"BeaconChainProofs\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/BeaconChainProofs.sol":"BeaconChainProofs"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"}},"version":1},"id":95} \ No newline at end of file diff --git a/out/Client.t.sol/MockClientTest.json b/out/Client.t.sol/MockClientTest.json new file mode 100644 index 00000000..42f16d00 --- /dev/null +++ b/out/Client.t.sol/MockClientTest.json @@ -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":"testOwnerCanSetPolicy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAccountCannotCallConfidentialFunction","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAccountCannotSetPolicy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testServiceManagerCanCallConfidentialFunction","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testServiceManagerIsSet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b61d84180620006516000396000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063b5508aa911620000a3578063dbdb262e116200006e578063dbdb262e14620001db578063e20c9f7114620001e5578063e8cb21b214620001ef578063fa7626d414620001f957600080fd5b8063b5508aa914620001a2578063ba414fa614620001ac578063c4be576214620001c7578063cde1736a14620001d157600080fd5b80633f7286f411620000e45780633f7286f4146200015c57806366d9a9a0146200016657806385226c81146200017f578063916a17c6146200019857600080fd5b806302519b1b146200011a5780630a9254e414620001265780631ed7831c14620001305780633e5e3c231462000152575b600080fd5b6200012462000207565b005b62000124620002e7565b6200013a62000b90565b604051620001499190620019e6565b60405180910390f35b6200013a62000bf4565b6200013a62000c56565b6200017062000cb8565b60405162000149919062001a35565b6200018962000dab565b60405162000149919062001b49565b6200017062000e85565b6200018962000f6f565b620001b662001049565b604051901515815260200162000149565b620001246200117e565b620001246200121e565b6200012462001352565b6200013a6200147d565b62000124620014df565b600054620001b69060ff1681565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156200026257600080fd5b505af115801562000277573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316635b34b9666040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620002cc57600080fd5b505af1158015620002e1573d6000803e3d6000fd5b50505050565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200034157600080fd5b505af115801562000356573d6000803e3d6000fd5b50505050604051620003689062001977565b604051809103906000f08015801562000385573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055604051620003b49062001984565b604051809103906000f080158015620003d1573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620004029062001992565b6001600160a01b039091168152602001604051809103906000f0801580156200042f573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392831617905560235460355460245460405192841693918216929116906200046e90620019a0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620004ab573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620004e090620019ae565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000514573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200058457600080fd5b505af115801562000599573d6000803e3d6000fd5b50505050604051620005ab90620019bc565b604051809103906000f080158015620005c8573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620005f99062001992565b6001600160a01b039091168152602001604051809103906000f08015801562000626573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200065590620019ca565b604051809103906000f08015801562000672573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620006a790620019ae565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620006db573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200076457600080fd5b505af115801562000779573d6000803e3d6000fd5b505050506000805160206200d7ec83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007cb57600080fd5b505af1158015620007e0573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200083157600080fd5b505af115801562000846573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200087d9060019060040162001baf565b600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b505050506000805160206200d7ec83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008ff57600080fd5b505af115801562000914573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620009359150620019d8565b6001600160a01b039091168152602001604051809103906000f08015801562000962573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b90620009a39060040162001d0f565b600060405180830381600087803b158015620009be57600080fd5b505af1158015620009d3573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000a269062001569565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000a7b9062001569565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000acb9062001569565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000b219062001569565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000b6e9062001688565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000bea57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bcb575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000bea576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bcb575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000bea576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bcb575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000da25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000d8957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d4a5790505b5050505050815250508152602001906001019062000cdc565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000da257838290600052602060002001805462000df19062001d40565b80601f016020809104026020016040519081016040528092919081815260200182805462000e1f9062001d40565b801562000e705780601f1062000e445761010080835404028352916020019162000e70565b820191906000526020600020905b81548152906001019060200180831162000e5257829003601f168201915b50505050508152602001906001019062000dcf565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000da25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f5657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000f175790505b5050505050815250508152602001906001019062000ea9565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000da257838290600052602060002001805462000fb59062001d40565b80601f016020809104026020016040519081016040528092919081815260200182805462000fe39062001d40565b8015620010345780601f10620010085761010080835404028352916020019162001034565b820191906000526020600020905b8154815290600101906020018083116200101657829003601f168201915b50505050508152602001906001019062000f93565b60008054610100900460ff16156200106a5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011795760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620010fb917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001d7d565b60408051601f1981840301815290829052620011179162001db0565b6000604051808303816000865af19150503d806000811462001156576040519150601f19603f3d011682016040523d82523d6000602084013e6200115b565b606091505b509150508080602001905181019062001175919062001dce565b9150505b919050565b6000805160206200d7ec83398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620011cc57600080fd5b505af1158015620011e1573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa7915060240162000247565b6000805160206200d7ec83398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200126c57600080fd5b505af115801562001281573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620012d357600080fd5b505af1158015620012e8573d6000803e3d6000fd5b5050602154604051636b4c991b60e01b815260206004820152600f60248201526e74657374706f6c696379313233343560881b60448201526001600160a01b039091169250636b4c991b9150606401600060405180830381600087803b158015620002cc57600080fd5b602154604051636b4c991b60e01b815260206004820152600c60248201526b74657374706f6c696379393960a01b60448201526001600160a01b0390911690636b4c991b90606401600060405180830381600087803b158015620013b557600080fd5b505af1158015620013ca573d6000803e3d6000fd5b505050506200147b602160009054906101000a90046001600160a01b03166001600160a01b031663c6cf634b6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001426573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001450919081019062001e0f565b6040518060400160405280600c81526020016b74657374706f6c696379393960a01b8152506200169c565b565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000bea576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bcb575050505050905090565b60215460408051633998fdd360e01b815290516200147b926001600160a01b031691633998fdd39160048083019260209291908290030181865afa1580156200152c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001552919062001ede565b601f546001600160a01b03908116911614620017e9565b600080826040516020016200157f919062001db0565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620015eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001611919062001ede565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200164f908590879060040162001efe565b600060405180830381600087803b1580156200166a57600080fd5b505af11580156200167f573d6000803e3d6000fd5b50505050915091565b6000620016958262001569565b5092915050565b80604051602001620016af919062001db0565b6040516020818303038152906040528051906020012082604051602001620016d8919062001db0565b6040516020818303038152906040528051906020012014620017e5577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620017619060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472604082015263696e675d60e01b606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200179a919062001f2c565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620017d3919062001f62565b60405180910390a1620017e562001864565b5050565b8062001861577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200184f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200186162001864565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620019665760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001901929160200162001d7d565b60408051601f19818403018152908290526200191d9162001db0565b6000604051808303816000865af19150503d80600081146200195c576040519150601f19603f3d011682016040523d82523d6000602084013e62001961565b606091505b505050505b6000805461ff001916610100179055565b60df8062001f9983390190565b610179806200207883390190565b61076780620021f183390190565b615f02806200295883390190565b610deb806200885a83390190565b610178806200964583390190565b61379980620097bd83390190565b610896806200cf5683390190565b6020808252825182820181905260009190848201906040850190845b8181101562001a295783516001600160a01b03168352928401929184019160010162001a02565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001add57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001ac75783516001600160e01b0319168252928b019260019290920191908b019062001a9b565b50978a0197955050509187019160010162001a5d565b50919998505050505050505050565b60005b8381101562001b0957818101518382015260200162001aef565b83811115620002e15750506000910152565b6000815180845262001b3581602086016020860162001aec565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001ba257603f1988860301845262001b8f85835162001b1b565b9450928501929085019060010162001b70565b5092979650505050505050565b60608152600062001bda60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062001d3a60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c9082168062001d5557607f821691505b6020821081141562001d7757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001da281600485016020870162001aec565b919091016004019392505050565b6000825162001dc481846020870162001aec565b9190910192915050565b60006020828403121562001de157600080fd5b8151801515811462001df257600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001e2257600080fd5b815167ffffffffffffffff8082111562001e3b57600080fd5b818401915084601f83011262001e5057600080fd5b81518181111562001e655762001e6562001df9565b604051601f8201601f19908116603f0116810190838211818310171562001e905762001e9062001df9565b8160405282815287602084870101111562001eaa57600080fd5b62001ebd83602083016020880162001aec565b979650505050505050565b6001600160a01b03811681146200186157600080fd5b60006020828403121562001ef157600080fd5b815162001df28162001ec8565b6001600160a01b038316815260406020820181905260009062001f249083018462001b1b565b949350505050565b60408152600a6040820152690808080808081319599d60b21b606082015260806020820152600062001df2608083018462001b1b565b60408152600a6040820152690808080808149a59da1d60b21b606082015260806020820152600062001df2608083018462001b1b56fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122041529af5af7f912d8251209c19e4c46d3d3fc49730bc1fcaad57bdefea7ebdfa64736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;263:827:81;2329:22:116;;263:827:81;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;263:827:81;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;263:827:81:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;263:827:81;;;-1:-1:-1;263:827:81;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;263:827:81;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001155760003560e01c8063b5508aa911620000a3578063dbdb262e116200006e578063dbdb262e14620001db578063e20c9f7114620001e5578063e8cb21b214620001ef578063fa7626d414620001f957600080fd5b8063b5508aa914620001a2578063ba414fa614620001ac578063c4be576214620001c7578063cde1736a14620001d157600080fd5b80633f7286f411620000e45780633f7286f4146200015c57806366d9a9a0146200016657806385226c81146200017f578063916a17c6146200019857600080fd5b806302519b1b146200011a5780630a9254e414620001265780631ed7831c14620001305780633e5e3c231462000152575b600080fd5b6200012462000207565b005b62000124620002e7565b6200013a62000b90565b604051620001499190620019e6565b60405180910390f35b6200013a62000bf4565b6200013a62000c56565b6200017062000cb8565b60405162000149919062001a35565b6200018962000dab565b60405162000149919062001b49565b6200017062000e85565b6200018962000f6f565b620001b662001049565b604051901515815260200162000149565b620001246200117e565b620001246200121e565b6200012462001352565b6200013a6200147d565b62000124620014df565b600054620001b69060ff1681565b601f5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b1580156200026257600080fd5b505af115801562000277573d6000803e3d6000fd5b50505050602160009054906101000a90046001600160a01b03166001600160a01b0316635b34b9666040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620002cc57600080fd5b505af1158015620002e1573d6000803e3d6000fd5b50505050565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200034157600080fd5b505af115801562000356573d6000803e3d6000fd5b50505050604051620003689062001977565b604051809103906000f08015801562000385573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055604051620003b49062001984565b604051809103906000f080158015620003d1573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620004029062001992565b6001600160a01b039091168152602001604051809103906000f0801580156200042f573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392831617905560235460355460245460405192841693918216929116906200046e90620019a0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620004ab573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620004e090620019ae565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000514573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200058457600080fd5b505af115801562000599573d6000803e3d6000fd5b50505050604051620005ab90620019bc565b604051809103906000f080158015620005c8573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620005f99062001992565b6001600160a01b039091168152602001604051809103906000f08015801562000626573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200065590620019ca565b604051809103906000f08015801562000672573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620006a790620019ae565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620006db573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200076457600080fd5b505af115801562000779573d6000803e3d6000fd5b505050506000805160206200d7ec83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007cb57600080fd5b505af1158015620007e0573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200083157600080fd5b505af115801562000846573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200087d9060019060040162001baf565b600060405180830381600087803b1580156200089857600080fd5b505af1158015620008ad573d6000803e3d6000fd5b505050506000805160206200d7ec83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008ff57600080fd5b505af115801562000914573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620009359150620019d8565b6001600160a01b039091168152602001604051809103906000f08015801562000962573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b90620009a39060040162001d0f565b600060405180830381600087803b158015620009be57600080fd5b505af1158015620009d3573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000a269062001569565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000a7b9062001569565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000acb9062001569565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000b219062001569565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000b6e9062001688565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000bea57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bcb575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000bea576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bcb575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000bea576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bcb575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000da25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000d8957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d4a5790505b5050505050815250508152602001906001019062000cdc565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000da257838290600052602060002001805462000df19062001d40565b80601f016020809104026020016040519081016040528092919081815260200182805462000e1f9062001d40565b801562000e705780601f1062000e445761010080835404028352916020019162000e70565b820191906000526020600020905b81548152906001019060200180831162000e5257829003601f168201915b50505050508152602001906001019062000dcf565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000da25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f5657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000f175790505b5050505050815250508152602001906001019062000ea9565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000da257838290600052602060002001805462000fb59062001d40565b80601f016020809104026020016040519081016040528092919081815260200182805462000fe39062001d40565b8015620010345780601f10620010085761010080835404028352916020019162001034565b820191906000526020600020905b8154815290600101906020018083116200101657829003601f168201915b50505050508152602001906001019062000f93565b60008054610100900460ff16156200106a5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011795760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620010fb917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001d7d565b60408051601f1981840301815290829052620011179162001db0565b6000604051808303816000865af19150503d806000811462001156576040519150601f19603f3d011682016040523d82523d6000602084013e6200115b565b606091505b509150508080602001905181019062001175919062001dce565b9150505b919050565b6000805160206200d7ec83398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620011cc57600080fd5b505af1158015620011e1573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa7915060240162000247565b6000805160206200d7ec83398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200126c57600080fd5b505af115801562001281573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620012d357600080fd5b505af1158015620012e8573d6000803e3d6000fd5b5050602154604051636b4c991b60e01b815260206004820152600f60248201526e74657374706f6c696379313233343560881b60448201526001600160a01b039091169250636b4c991b9150606401600060405180830381600087803b158015620002cc57600080fd5b602154604051636b4c991b60e01b815260206004820152600c60248201526b74657374706f6c696379393960a01b60448201526001600160a01b0390911690636b4c991b90606401600060405180830381600087803b158015620013b557600080fd5b505af1158015620013ca573d6000803e3d6000fd5b505050506200147b602160009054906101000a90046001600160a01b03166001600160a01b031663c6cf634b6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001426573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001450919081019062001e0f565b6040518060400160405280600c81526020016b74657374706f6c696379393960a01b8152506200169c565b565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000bea576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bcb575050505050905090565b60215460408051633998fdd360e01b815290516200147b926001600160a01b031691633998fdd39160048083019260209291908290030181865afa1580156200152c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001552919062001ede565b601f546001600160a01b03908116911614620017e9565b600080826040516020016200157f919062001db0565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620015eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001611919062001ede565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200164f908590879060040162001efe565b600060405180830381600087803b1580156200166a57600080fd5b505af11580156200167f573d6000803e3d6000fd5b50505050915091565b6000620016958262001569565b5092915050565b80604051602001620016af919062001db0565b6040516020818303038152906040528051906020012082604051602001620016d8919062001db0565b6040516020818303038152906040528051906020012014620017e5577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620017619060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472604082015263696e675d60e01b606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200179a919062001f2c565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620017d3919062001f62565b60405180910390a1620017e562001864565b5050565b8062001861577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200184f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200186162001864565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620019665760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001901929160200162001d7d565b60408051601f19818403018152908290526200191d9162001db0565b6000604051808303816000865af19150503d80600081146200195c576040519150601f19603f3d011682016040523d82523d6000602084013e62001961565b606091505b505050505b6000805461ff001916610100179055565b60df8062001f9983390190565b610179806200207883390190565b61076780620021f183390190565b615f02806200295883390190565b610deb806200885a83390190565b610178806200964583390190565b61379980620097bd83390190565b610896806200cf5683390190565b6020808252825182820181905260009190848201906040850190845b8181101562001a295783516001600160a01b03168352928401929184019160010162001a02565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001add57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001ac75783516001600160e01b0319168252928b019260019290920191908b019062001a9b565b50978a0197955050509187019160010162001a5d565b50919998505050505050505050565b60005b8381101562001b0957818101518382015260200162001aef565b83811115620002e15750506000910152565b6000815180845262001b3581602086016020860162001aec565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001ba257603f1988860301845262001b8f85835162001b1b565b9450928501929085019060010162001b70565b5092979650505050505050565b60608152600062001bda60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062001d3a60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c9082168062001d5557607f821691505b6020821081141562001d7757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001da281600485016020870162001aec565b919091016004019392505050565b6000825162001dc481846020870162001aec565b9190910192915050565b60006020828403121562001de157600080fd5b8151801515811462001df257600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001e2257600080fd5b815167ffffffffffffffff8082111562001e3b57600080fd5b818401915084601f83011262001e5057600080fd5b81518181111562001e655762001e6562001df9565b604051601f8201601f19908116603f0116810190838211818310171562001e905762001e9062001df9565b8160405282815287602084870101111562001eaa57600080fd5b62001ebd83602083016020880162001aec565b979650505050505050565b6001600160a01b03811681146200186157600080fd5b60006020828403121562001ef157600080fd5b815162001df28162001ec8565b6001600160a01b038316815260406020820181905260009062001f249083018462001b1b565b949350505050565b60408152600a6040820152690808080808081319599d60b21b606082015260806020820152600062001df2608083018462001b1b565b60408152600a6040820152690808080808149a59da1d60b21b606082015260806020820152600062001df2608083018462001b1b56fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122041529af5af7f912d8251209c19e4c46d3d3fc49730bc1fcaad57bdefea7ebdfa64736f6c634300080c0033","sourceMap":"263:827:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:149;;;:::i;:::-;;192:2146:114;;;:::i;2161:134:26:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3750:14:120;;3743:22;3725:41;;3713:2;3698:18;1819:584:20;3585:187:120;767:166:81;;;:::i;600:161::-;;;:::i;452:142::-;;;:::i;2013::26:-;;;:::i;316:130:81:-;;;:::i;1572:26:20:-;;;;;;;;;939:149:81;1030:14;;1013:33;;-1:-1:-1;;;1013:33:81;;-1:-1:-1;;;;;1030:14:81;;;1013:33;;;3923:51:120;1013:8:81;;;;3896:18:120;;1013:33:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1056:6;;;;;;;;;-1:-1:-1;;;;;1056:6:81;-1:-1:-1;;;;;1056:23:81;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:149::o;192:2146:114:-;240:5;;226:20;;-1:-1:-1;;;226:20:114;;-1:-1:-1;;;;;240:5:114;;;226:20;;;3923:51:120;226:13:114;;;;3896:18:120;;226:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;256:15:114;:43;;-1:-1:-1;;;;;;256:43:114;-1:-1:-1;;;;;256:43:114;;;;;;;;;;327:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;309:15:114;:43;;-1:-1:-1;;;;;;309:43:114;-1:-1:-1;;;;;309:43:114;;;;;;407:5;;388:25;;407:5;;;388:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;388:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;363:22:114;:50;;-1:-1:-1;;;;;;363:50:114;-1:-1:-1;;;;;363:50:114;;;;;;503:15;;521:7;;538:15;;469:86;;503:15;;;;521:7;;;;538:15;;;469:86;;;:::i;:::-;-1:-1:-1;;;;;4243:15:120;;;4225:34;;4295:15;;;4290:2;4275:18;;4268:43;4347:15;;;4342:2;4327:18;;4320:43;4175:2;4160:18;469:86:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:31:114;:132;;-1:-1:-1;;;;;;423:132:114;-1:-1:-1;;;;;423:132:114;;;;;;;;;692:22;;628:88;;423:132;;692:22;;628:88;;;:::i;:::-;-1:-1:-1;;;;;4604:15:120;;;4586:34;;4656:15;;4651:2;4636:18;;4629:43;4536:2;4521:18;628:88:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:17:114;:162;;-1:-1:-1;;;;;;565:162:114;-1:-1:-1;;;;;565:162:114;;;;;;;;;797:14;;737:82;;-1:-1:-1;;;737:82:114;;774:4;737:82;;;4993:34:120;797:14:114;;5043:18:120;;;5036:43;-1:-1:-1;5095:18:120;;;5088:34;;;5138:18;;;5131:34;565:162:114;737:28;;4927:19:120;;737:82:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;830:13:114;:39;;-1:-1:-1;;;;;;830:39:114;-1:-1:-1;;;;;830:39:114;;;;;;920:5;;901:25;;920:5;;;901:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;901:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;879:19:114;:47;;-1:-1:-1;;;;;;879:47:114;-1:-1:-1;;;;;879:47:114;;;;;;;;;;967:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;936:28:114;:51;;-1:-1:-1;;;;;;936:51:114;-1:-1:-1;;;;;936:51:114;;;;;;;;;1110:19;;1049:82;;936:51;;1110:19;;1049:82;;;:::i;:::-;-1:-1:-1;;;;;4604:15:120;;;4586:34;;4656:15;;4651:2;4636:18;;4629:43;4536:2;4521:18;1049:82:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;997:14:114;:136;;-1:-1:-1;;;;;;997:136:114;-1:-1:-1;;;;;997:136:114;;;;;;;;;1209:10;;1241:17;;1281:13;;1143:263;;-1:-1:-1;;;1143:263:114;;1190:4;1143:263;;;5509:34:120;1209:10:114;;;5559:18:120;;;5552:43;1241:17:114;;;5611:18:120;;;5604:43;;;1281:13:114;;5663:18:120;;;5656:43;5715:19;;;5708:44;;;;-1:-1:-1;5768:19:120;;;5761:35;997:136:114;1143:25;;5443:19:120;;1143:263:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1416:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1441:28:114;;-1:-1:-1;;;1441:28:114;;1463:4;1441:28;;;3923:51:120;1441:13:114;;-1:-1:-1;1441:13:114;;-1:-1:-1;3896:18:120;;1441:28:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1479:14:114;;:319;;-1:-1:-1;;;1479:319:114;;-1:-1:-1;;;;;1479:14:114;;;;-1:-1:-1;1479:27:114;;-1:-1:-1;1479:319:114;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1808:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1865:14:114;;1842:39;;-1:-1:-1;;;;;1865:14:114;;;;-1:-1:-1;1842:39:114;;-1:-1:-1;1842:39:114;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;1842:39:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1833:6:114;:48;;-1:-1:-1;;;;;;1833:48:114;-1:-1:-1;;;;;1833:48:114;;;;;;;;;1891:30;;-1:-1:-1;;;1891:30:114;;:16;;:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1972:6:114;;1931:22;:49;;-1:-1:-1;;;;;;1931:49:114;-1:-1:-1;;;;;1972:6:114;;;1931:49;;;;;;-1:-1:-1;;2021:29:114;;;;;;;;;;;;-1:-1:-1;;;2021:29:114;;;;;;:14;:29::i;:::-;2004:13;1990:60;1991:11;1990:60;;-1:-1:-1;;;;;;1990:60:114;-1:-1:-1;;;;;1990:60:114;;;;;;;;;;2101:34;;;;;;;;;;;;-1:-1:-1;;;2101:34:114;;;;;;:14;:34::i;:::-;2079:18;2060:75;2061:16;2060:75;;-1:-1:-1;;;;;;2060:75:114;-1:-1:-1;;;;;2060:75:114;;;;;;;;;;2176:29;;;;;;;;;;;;-1:-1:-1;;;2176:29:114;;;;;;:14;:29::i;:::-;2159:13;2145:60;;;2146:11;2145:60;;-1:-1:-1;;;;;;2145:60:114;-1:-1:-1;;;;;2145:60:114;;;;;;;;;;;2256:34;;;;;;;;;;;-1:-1:-1;;;2256:34:114;;;;;;:14;:34::i;:::-;2234:18;2215:75;2216:16;2215:75;;-1:-1:-1;;;;;;2215:75:114;-1:-1:-1;;;;;2215:75:114;;;;;;;;;;2311:20;;;;;;;;;;;;-1:-1:-1;;;2311:20:114;;;;;;:8;:20::i;:::-;2300:8;:31;;-1:-1:-1;;;;;;2300:31:114;-1:-1:-1;;;;;2300:31:114;;;;;;;;;;192:2146::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;8142:51:120;;;-1:-1:-1;;;8209:18:120;;;8202:34;2196:43:20;;;;;;;;;8115:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;767:166:81:-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;843:15:81;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;870:21:81;;-1:-1:-1;;;870:21:81;;887:2;870:21;;;3923:51:120;870:8:81;;-1:-1:-1;870:8:81;;-1:-1:-1;3896:18:120;;870:21:81;3777:203:120;600:161:81;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;661:15:81;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;688:21:81;;-1:-1:-1;;;688:21:81;;705:2;688:21;;;3923:51:120;688:8:81;;-1:-1:-1;688:8:81;;-1:-1:-1;3896:18:120;;688:21:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;719:6:81;;:35;;-1:-1:-1;;;719:35:81;;9386:2:120;719:35:81;;;9368:21:120;9425:2;9405:18;;;9398:30;-1:-1:-1;;;9444:18:120;;;9437:45;-1:-1:-1;;;;;719:6:81;;;;-1:-1:-1;719:16:81;;-1:-1:-1;9499:18:120;;719:35:81;;;;;;;;;;;;;;;;;;;452:142;502:6;;:32;;-1:-1:-1;;;502:32:81;;9730:2:120;502:32:81;;;9712:21:120;9769:2;9749:18;;;9742:30;-1:-1:-1;;;9788:18:120;;;9781:42;-1:-1:-1;;;;;502:6:81;;;;:16;;9840:18:120;;502:32:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;544:43;553:6;;;;;;;;;-1:-1:-1;;;;;553:6:81;-1:-1:-1;;;;;553:15:81;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;553:17:81;;;;;;;;;;;;:::i;:::-;544:43;;;;;;;;;;;;;-1:-1:-1;;;544:43:81;;;:8;:43::i;:::-;452:142::o;2013::26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;316:130:81:-;414:6;;:23;;;-1:-1:-1;;;414:23:81;;;;368:71;;-1:-1:-1;;;;;414:6:81;;:21;;:23;;;;;;;;;;;;;;:6;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;387:14;;-1:-1:-1;;;;;387:14:81;;;379:59;;;368:10;:71::i;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;11768:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;11741:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;16415:125::-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;17902:344:20:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;12601:2:120;12583:21;;;12640:2;12620:18;;;12613:30;12679:34;12674:2;12659:18;;12652:62;-1:-1:-1;;;12745:2:120;12730:18;;12723:34;12789:3;12774:19;;12399:400;18062:43:20;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;:::-;17902:344;;:::o;3262:157::-;3322:9;3317:96;;3352:30;;;;;13920:2:120;13902:21;;;13959:2;13939:18;;;13932:30;13998:25;13993:2;13978:18;;13971:53;14056:2;14041:18;;13718:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;14272:51:120;;;-1:-1:-1;;;14339:18:120;;;14332:34;;;;2712:4:20;14382:18:120;;;14375:34;2489:11:20;;1671:64;2586:43;;14245:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;-1:-1:-1;;2499:1:120;2481:16;;2474:27;2251:258::o;2514:::-;2556:3;2594:5;2588:12;2621:6;2616:3;2609:19;2637:63;2693:6;2686:4;2681:3;2677:14;2670:4;2663:5;2659:16;2637:63;:::i;:::-;2754:2;2733:15;-1:-1:-1;;2729:29:120;2720:39;;;;2761:4;2716:50;;2514:258;-1:-1:-1;;2514:258:120:o;2777:803::-;2939:4;2968:2;3008;2997:9;2993:18;3038:2;3027:9;3020:21;3061:6;3096;3090:13;3127:6;3119;3112:22;3165:2;3154:9;3150:18;3143:25;;3227:2;3217:6;3214:1;3210:14;3199:9;3195:30;3191:39;3177:53;;3265:2;3257:6;3253:15;3286:1;3296:255;3310:6;3307:1;3304:13;3296:255;;;3403:2;3399:7;3387:9;3379:6;3375:22;3371:36;3366:3;3359:49;3431:40;3464:6;3455;3449:13;3431:40;:::i;:::-;3421:50;-1:-1:-1;3529:12:120;;;;3494:15;;;;3332:1;3325:9;3296:255;;;-1:-1:-1;3568:6:120;;2777:803;-1:-1:-1;;;;;;;2777:803:120:o;5971:1325::-;6310:2;6299:9;6292:21;6273:4;6336:49;6381:2;6370:9;6366:18;5884:2;5872:15;;-1:-1:-1;;;5912:4:120;5903:14;;5896:36;5957:2;5948:12;;5807:159;6336:49;6433:9;6425:6;6421:22;6416:2;6405:9;6401:18;6394:50;6468:3;6460:6;6453:19;6505:66;6500:2;6492:6;6488:15;6481:91;6605:66;6600:2;6592:6;6588:15;6581:91;6705:66;6700:2;6692:6;6688:15;6681:91;6806:66;6800:3;6792:6;6788:16;6781:92;6907:66;6901:3;6893:6;6889:16;6882:92;7008:66;7002:3;6994:6;6990:16;6983:92;7109:66;7103:3;7095:6;7091:16;7084:92;-1:-1:-1;;;7204:3:120;7196:6;7192:16;7185:29;7243:3;7235:6;7231:16;7223:24;;;7283:6;7278:2;7267:9;7263:18;7256:34;5971:1325;;;;:::o;7301:277::-;7503:2;7492:9;7485:21;7466:4;7523:49;7568:2;7557:9;7553:18;5884:2;5872:15;;-1:-1:-1;;;5912:4:120;5903:14;;5896:36;5957:2;5948:12;;5807:159;7523:49;7515:57;7301:277;-1:-1:-1;;7301:277:120:o;7583:380::-;7662:1;7658:12;;;;7705;;;7726:61;;7780:4;7772:6;7768:17;7758:27;;7726:61;7833:2;7825:6;7822:14;7802:18;7799:38;7796:161;;;7879:10;7874:3;7870:20;7867:1;7860:31;7914:4;7911:1;7904:15;7942:4;7939:1;7932:15;7796:161;;7583:380;;;:::o;8247:371::-;-1:-1:-1;;;;;;8432:33:120;;8420:46;;8489:13;;8402:3;;8511:61;8489:13;8561:1;8552:11;;8545:4;8533:17;;8511:61;:::i;:::-;8592:16;;;;8610:1;8588:24;;8247:371;-1:-1:-1;;;8247:371:120:o;8623:274::-;8752:3;8790:6;8784:13;8806:53;8852:6;8847:3;8840:4;8832:6;8828:17;8806:53;:::i;:::-;8875:16;;;;;8623:274;-1:-1:-1;;8623:274:120:o;8902:277::-;8969:6;9022:2;9010:9;9001:7;8997:23;8993:32;8990:52;;;9038:1;9035;9028:12;8990:52;9070:9;9064:16;9123:5;9116:13;9109:21;9102:5;9099:32;9089:60;;9145:1;9142;9135:12;9089:60;9168:5;8902:277;-1:-1:-1;;;8902:277:120:o;9869:127::-;9930:10;9925:3;9921:20;9918:1;9911:31;9961:4;9958:1;9951:15;9985:4;9982:1;9975:15;10001:884;10081:6;10134:2;10122:9;10113:7;10109:23;10105:32;10102:52;;;10150:1;10147;10140:12;10102:52;10183:9;10177:16;10212:18;10253:2;10245:6;10242:14;10239:34;;;10269:1;10266;10259:12;10239:34;10307:6;10296:9;10292:22;10282:32;;10352:7;10345:4;10341:2;10337:13;10333:27;10323:55;;10374:1;10371;10364:12;10323:55;10403:2;10397:9;10425:2;10421;10418:10;10415:36;;;10431:18;;:::i;:::-;10506:2;10500:9;10474:2;10560:13;;-1:-1:-1;;10556:22:120;;;10580:2;10552:31;10548:40;10536:53;;;10604:18;;;10624:22;;;10601:46;10598:72;;;10650:18;;:::i;:::-;10690:10;10686:2;10679:22;10725:2;10717:6;10710:18;10765:7;10760:2;10755;10751;10747:11;10743:20;10740:33;10737:53;;;10786:1;10783;10776:12;10737:53;10799:55;10851:2;10846;10838:6;10834:15;10829:2;10825;10821:11;10799:55;:::i;:::-;10873:6;10001:884;-1:-1:-1;;;;;;;10001:884:120:o;10890:148::-;-1:-1:-1;;;;;10982:31:120;;10972:42;;10962:70;;11028:1;11025;11018:12;11043:293;11138:6;11191:2;11179:9;11170:7;11166:23;11162:32;11159:52;;;11207:1;11204;11197:12;11159:52;11239:9;11233:16;11258:48;11300:5;11258:48;:::i;12077:317::-;-1:-1:-1;;;;;12254:32:120;;12236:51;;12323:2;12318;12303:18;;12296:30;;;-1:-1:-1;;12343:45:120;;12369:18;;12361:6;12343:45;:::i;:::-;12335:53;12077:317;-1:-1:-1;;;;12077:317:120:o;12804:452::-;13054:2;13043:9;13036:21;13093:2;13088;13077:9;13073:18;13066:30;-1:-1:-1;;;13127:2:120;13116:9;13112:18;13105:40;13183:3;13176:4;13165:9;13161:20;13154:33;13017:4;13204:46;13245:3;13234:9;13230:19;13222:6;13204:46;:::i;13261:452::-;13511:2;13500:9;13493:21;13550:2;13545;13534:9;13530:18;13523:30;-1:-1:-1;;;13584:2:120;13573:9;13569:18;13562:40;13640:3;13633:4;13622:9;13618:20;13611:33;13474:4;13661:46;13702:3;13691:9;13687:19;13679:6;13661:46;:::i","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","testOwnerCanSetPolicy()":"dbdb262e","testRandomAccountCannotCallConfidentialFunction()":"c4be5762","testRandomAccountCannotSetPolicy()":"cde1736a","testServiceManagerCanCallConfidentialFunction()":"02519b1b","testServiceManagerIsSet()":"e8cb21b2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"testOwnerCanSetPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAccountCannotCallConfidentialFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAccountCannotSetPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testServiceManagerCanCallConfidentialFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testServiceManagerIsSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Client.t.sol\":\"MockClientTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/Client.t.sol\":{\"keccak256\":\"0x509419fa282c8998c5c4b8ba74cd683664696f6dc8359649da0fdaba93c33448\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://767839da5d3968dced4c1ded0ab350a47905273dd24eb23089ddea1b4e7b7456\",\"dweb:/ipfs/QmbT1D5E1px7xeMHXWYfc52RK4tpWwkynC9JUxkrrxGQ8E\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/ServiceManagerSetup.sol\":{\"keccak256\":\"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c\",\"dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"testOwnerCanSetPolicy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAccountCannotCallConfidentialFunction"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAccountCannotSetPolicy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testServiceManagerCanCallConfidentialFunction"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testServiceManagerIsSet"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Client.t.sol":"MockClientTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/Client.t.sol":{"keccak256":"0x509419fa282c8998c5c4b8ba74cd683664696f6dc8359649da0fdaba93c33448","urls":["bzz-raw://767839da5d3968dced4c1ded0ab350a47905273dd24eb23089ddea1b4e7b7456","dweb:/ipfs/QmbT1D5E1px7xeMHXWYfc52RK4tpWwkynC9JUxkrrxGQ8E"],"license":"GPL-3.0-or-later"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/ServiceManagerSetup.sol":{"keccak256":"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2","urls":["bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c","dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":81} \ No newline at end of file diff --git a/out/Context.sol/Context.json b/out/Context.sol/Context.json new file mode 100644 index 00000000..3cdc5b55 --- /dev/null +++ b/out/Context.sol/Context.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":52} \ No newline at end of file diff --git a/out/ContextUpgradeable.sol/ContextUpgradeable.json b/out/ContextUpgradeable.sol/ContextUpgradeable.json new file mode 100644 index 00000000..aef5377f --- /dev/null +++ b/out/ContextUpgradeable.sol/ContextUpgradeable.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":"ContextUpgradeable"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"}},"version":1},"id":40} \ No newline at end of file diff --git a/out/DelegationManager.sol/DelegationManager.json b/out/DelegationManager.sol/DelegationManager.json new file mode 100644 index 00000000..a3e15023 --- /dev/null +++ b/out/DelegationManager.sol/DelegationManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_strategyManager","type":"address","internalType":"contract IStrategyManager"},{"name":"_slasher","type":"address","internalType":"contract ISlasher"},{"name":"_eigenPodManager","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAKER_DELEGATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"avsOperatorStatus","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"stateMutability":"view"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"calculateCurrentStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateDelegationApprovalDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"_stakerNonce","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"completeQueuedWithdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"},{"name":"receiveAsTokens","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeQueuedWithdrawals","inputs":[{"name":"withdrawals","type":"tuple[]","internalType":"struct IDelegationManager.Withdrawal[]","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[][]","internalType":"contract IERC20[][]"},{"name":"middlewareTimesIndexes","type":"uint256[]","internalType":"uint256[]"},{"name":"receiveAsTokens","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeWithdrawalsQueued","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decreaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateTo","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateToBySignature","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"stakerSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegatedTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApprover","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApproverSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"earningsReceiver","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"getDelegatableShares","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"initialPausedStatus","type":"uint256","internalType":"uint256"},{"name":"_withdrawalDelayBlocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegated","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawals","inputs":[{"name":"withdrawalsToMigrate","type":"tuple[]","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyOperatorDetails","inputs":[{"name":"newOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorDetails","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorShares","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"pendingWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"queueWithdrawals","inputs":[{"name":"queuedWithdrawalParams","type":"tuple[]","internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"withdrawer","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerAsOperator","inputs":[{"name":"registeringOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]},{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerNonce","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerOptOutWindowBlocks","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"test","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawalRoots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalDelayBlocks","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"anonymous":false},{"type":"event","name":"OperatorDetailsModified","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newOperatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorMetadataURIUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorSharesDecreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSharesIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"StakerDelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerForceUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalCompleted","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalDelayBlocksSet","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalMigrated","inputs":[{"name":"oldWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalQueued","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"withdrawal","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"anonymous":false}],"bytecode":{"object":"0x6101006040523480156200001257600080fd5b5060405162005f0138038062005f01833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615cd8620002296000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a26469706673582212206f6617ba5ee69c14c2668d94be29ae08f0acadc22e01e0d1e282373dff3189cc64736f6c634300080c0033","sourceMap":"1050:47496:96:-:0;;;2772:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5860:34:97;;;;;5904;;;;;5948:18;;;;2984:22:96::1;:20;:22::i;:::-;-1:-1:-1::0;;3036:13:96::1;3016:33;::::0;-1:-1:-1;1050:47496:96;;5388:279:38;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:38;;1018:2:120;5447:66:38;;;1000:21:120;1057:2;1037:18;;;1030:30;1096:34;1076:18;;;1069:62;-1:-1:-1;;;1147:18:120;;;1140:37;1194:19;;5447:66:38;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:38;5588:15;5573:30;;;;;;5622:28;;1366:36:120;;;5622:28:38;;1354:2:120;1339:18;5622:28:38;;;;;;;5523:138;5388:279::o;14:149:120:-;-1:-1:-1;;;;;107:31:120;;97:42;;87:70;;153:1;150;143:12;87:70;14:149;:::o;168:643::-;326:6;334;342;395:2;383:9;374:7;370:23;366:32;363:52;;;411:1;408;401:12;363:52;443:9;437:16;462:49;505:5;462:49;:::i;:::-;580:2;565:18;;559:25;530:5;;-1:-1:-1;593:51:120;559:25;593:51;:::i;:::-;715:2;700:18;;694:25;663:7;;-1:-1:-1;728:51:120;694:25;728:51;:::i;:::-;798:7;788:17;;;168:643;;;;;:::o;1224:184::-;1050:47496:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a26469706673582212206f6617ba5ee69c14c2668d94be29ae08f0acadc22e01e0d1e282373dff3189cc64736f6c634300080c0033","sourceMap":"1050:47496:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:155:97;;1190:92;1127:155;;;;;160:25:120;;;148:2;133:18;1127:155:97;;;;;;;;46593:630:96;;;;;;:::i;:::-;;:::i;13790:1509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4408:756::-;;;;;;:::i;:::-;;:::i;:::-;;5869:152:101;;;;;;:::i;:::-;;:::i;22122:493:96:-;;;;;;:::i;:::-;;:::i;3845:406:101:-;;;;;;:::i;:::-;;:::i;41903:173:96:-;;;;;;:::i;:::-;-1:-1:-1;;;;;42018:26:96;41992:7;42018:26;;;:16;:26;;;;;:51;;;-1:-1:-1;;;42018:51:96;;;;;41903:173;44609:408;;;;;;:::i;:::-;;:::i;645:130:97:-;;695:80;645:130;;21094:486:96;;;;;;:::i;:::-;;:::i;3493:46:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;17815:458:96;;;;;;:::i;:::-;;:::i;5671:71:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7706:14:120;;7699:22;7681:41;;7669:2;7654:18;5671:71:97;7541:187:120;1917:49:97;;;;;;;;-1:-1:-1;;;;;7923:32:120;;;7905:51;;7893:2;7878:18;1917:49:97;7733:229:120;41652:161:96;;;;;;:::i;:::-;-1:-1:-1;;;;;41761:26:96;;;41735:7;41761:26;;;:16;:26;;;;;:45;;;;;41652:161;40650:137;;;;;;:::i;:::-;;:::i;874:152:97:-;;935:91;874:152;;2125:49;;;;;5387:94;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1932:74:96:-;;1991:15;1932:74;;4578:36:97;;;;;;4326:136:101;;;:::i;44157:164:96:-;;;;;;:::i;:::-;;:::i;5635:163:101:-;;;;;;:::i;:::-;5767:7;;5738:1;:10;;;;;;;;5767:14;;;5766:24;;5635:163;5447:87;5520:7;;5447:87;;18510:2042:96;;;;;;:::i;:::-;;:::i;41403:157::-;;;;;;:::i;:::-;-1:-1:-1;;;;;41510:26:96;;;41484:7;41510:26;;;:16;:26;;;;;:43;;;41403:157;16741:340;;;;;;:::i;:::-;;:::i;3289:46:97:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3289:46:97;;;40894:162:96;;;;;;:::i;:::-;;:::i;2071:101:37:-;;;:::i;2742:71:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9662:1198:96;;;;;;:::i;:::-;;:::i;1824:37:101:-;;;;;-1:-1:-1;;;;;1824:37:101;;;1441:85:37;1513:6;;-1:-1:-1;;;;;1513:6:37;1441:85;;2074:104:96;;2135:42;2074:104;;22864:1751;;;;;;:::i;:::-;;:::i;6075:276::-;;;;;;:::i;:::-;;:::i;47626:508::-;;;;;;:::i;:::-;;:::i;5028:62:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;24775:610:96;;;;;;:::i;:::-;;:::i;6556:150::-;;;;;;:::i;:::-;;:::i;2025:33:97:-;;;;;4731:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3982:81;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;41159:154:96;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41280:26:96;;;;;:16;:26;;;;;41273:33;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;41273:33:96;;;;;;;;;;41159:154;;;;;23632:13:120;;-1:-1:-1;;;;;23628:22:120;;;23610:41;;23711:4;23699:17;;;23693:24;23689:33;;;23667:20;;;23660:63;23771:17;;;23765:24;23791:10;23761:41;23739:20;;;23732:71;23560:2;23545:18;41159:154:96;23358:451:120;45447:550:96;;;;;;:::i;:::-;;:::i;2181:60:97:-;;2235:6;2181:60;;42301:1790:96;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1377:150:97:-;;1446:81;1377:150;;11185:2248:96;;;;;;:::i;:::-;;:::i;3225:432::-;;;;;;:::i;:::-;;:::i;7709:352::-;;;;;;:::i;:::-;;:::i;5576:279::-;;;;;;:::i;:::-;;:::i;2321:198:37:-;;;;;;:::i;:::-;;:::i;40311:227:96:-;;;:::i;4938:439:101:-;;;;;;:::i;:::-;;:::i;46593:630:96:-;46916:101;;;1190:92:97;46916:101:96;;;;27441:25:120;;;;-1:-1:-1;;;;;27540:15:120;;;27520:18;;;27513:43;27592:15;;;27572:18;;;27565:43;27644:15;;27624:18;;;27617:43;27676:19;;;27669:35;;;27720:19;;;;27713:35;;;46916:101:96;;;;;;;;;;27413:19:120;;;;46916:101:96;;;46893:134;;;;;-1:-1:-1;;;47142:17:96;:15;:17::i;:::-;47113:67;;-1:-1:-1;;;47113:67:96;;;28017:27:120;28060:11;;;28053:27;;;;28096:12;;;28089:28;;;28133:12;;47113:67:96;;;;;;-1:-1:-1;;47113:67:96;;;;;;47103:78;;47113:67;47103:78;;;;;46593:630;-1:-1:-1;;;;;;;;46593:630:96:o;13790:1509::-;5767:7:101;;13955:16:96;;1405:1;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;;;;;;;;;13983:32:96::1;14032:22:::0;-1:-1:-1;;;;;14018:44:96;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;14018:44:96::1;;13983:79;;14078:9;14073:1188;14093:33:::0;;::::1;14073:1188;;;14219:22;;14242:1;14219:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:39;;14172:22;;14195:1;14172:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;::::1;:::i;:::-;:43;;:86;14147:201;;;::::0;-1:-1:-1;;;14147:201:96;;30308:2:120;14147:201:96::1;::::0;::::1;30290:21:120::0;30347:2;30327:18;;;30320:30;30386:34;30366:18;;;30359:62;30457:26;30437:18;;;30430:54;30501:19;;14147:201:96::1;30106:420:120::0;14147:201:96::1;14435:1;14387:22:::0;;14410:1;14387:25;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;14387:50:96::1;;;14362:181;;;::::0;-1:-1:-1;;;14362:181:96;;30733:2:120;14362:181:96::1;::::0;::::1;30715:21:120::0;30772:2;30752:18;;;30745:30;30811:34;30791:18;;;30784:62;30882:34;30862:18;;;30855:62;-1:-1:-1;;;30933:19:120;;;30926:39;30982:19;;14362:181:96::1;30531:476:120::0;14362:181:96::1;14589:10;14558:16;14577:23:::0;;;:11:::1;:23;::::0;;;;;-1:-1:-1;;;;;14577:23:96::1;::::0;14941:309:::1;::::0;14577:23;15075:22;;15098:1;15075:25;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;;;;::::1;;;:::i;:::-;15141:22;;15164:1;15141:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;::::1;:::i;:::-;14941:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;15203:22:96;;-1:-1:-1;15203:22:96;;-1:-1:-1;15226:1:96;;-1:-1:-1;15203:25:96;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;14941:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14941:31:96::1;::::0;-1:-1:-1;;;14941:309:96:i:1;:::-;14920:15;14936:1;14920:18;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:330;-1:-1:-1;14128:3:96;::::1;::::0;::::1;:::i;:::-;;;;14073:1188;;;-1:-1:-1::0;15277:15:96;13790:1509;-1:-1:-1;;;;13790:1509:96:o;4408:756::-;4597:10;4637:1;4580:28;;;:16;:28;;;;;:45;-1:-1:-1;;;;;4580:45:96;:59;4559:175;;;;-1:-1:-1;;;4559:175:96;;31486:2:120;4559:175:96;;;31468:21:120;31525:2;31505:18;;;31498:30;31564:34;31544:18;;;31537:62;31635:34;31615:18;;;31608:62;-1:-1:-1;;;31686:19:120;;;31679:36;31732:19;;4559:175:96;31284:473:120;4559:175:96;4744:59;4764:10;4776:26;4744:19;:59::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;4925:70:96;4935:10;;4959:23;4992:1;4925:9;:70::i;:::-;5052:10;-1:-1:-1;;;;;5033:58:96;;5064:26;5033:58;;;;;;:::i;:::-;;;;;;;;5133:10;-1:-1:-1;;;;;5106:51:96;;5145:11;;5106:51;;;;;;;:::i;:::-;;;;;;;;4549:615;4408:756;;;:::o;5869:152:101:-;2284:14;;;;;;;;;-1:-1:-1;;;;;2284:14:101;-1:-1:-1;;;;;2284:23:101;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2270:39:101;:10;-1:-1:-1;;;;;2270:39:101;;2262:94;;;;-1:-1:-1;;;2262:94:101;;;;;;;:::i;:::-;5977:37:::1;5996:17;5977:18;:37::i;:::-;5869:152:::0;:::o;22122:493:96:-;2400:10;-1:-1:-1;;;;;2422:15:96;2400:38;;;:80;;-1:-1:-1;2442:10:96;-1:-1:-1;;;;;2464:15:96;2442:38;;2400:80;2379:182;;;;-1:-1:-1;;;2379:182:96;;;;;;;:::i;:::-;22350:19:::1;22362:6;22350:11;:19::i;:::-;22346:263;;;-1:-1:-1::0;;;;;22404:19:96;;::::1;22385:16;22404:19:::0;;;:11:::1;:19;::::0;;;;;::::1;22501:97;22404:19:::0;22416:6;22572:8;22590:6;22501:23:::1;:97::i;:::-;22371:238;22346:263;22122:493:::0;;;:::o;3845:406:101:-;2124:14;;:35;;-1:-1:-1;;;2124:35:101;;2148:10;2124:35;;;7905:51:120;-1:-1:-1;;;;;2124:14:101;;;;:23;;7878:18:120;;2124:35:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:88;;;;-1:-1:-1;;;2116:88:101;;;;;;;:::i;:::-;4091:7:::1;::::0;4061:25;;::::1;4060:38;4052:107;;;::::0;-1:-1:-1;;;4052:107:101;;34800:2:120;4052:107:101::1;::::0;::::1;34782:21:120::0;34839:2;34819:18;;;34812:30;34878:34;34858:18;;;34851:62;34949:26;34929:18;;;34922:54;34993:19;;4052:107:101::1;34598:420:120::0;4052:107:101::1;4169:7;:25:::0;;;4209:35:::1;::::0;160:25:120;;;4216:10:101::1;::::0;4209:35:::1;::::0;148:2:120;133:18;4209:35:101::1;;;;;;;;3845:406:::0;:::o;44609:408:96:-;-1:-1:-1;;;;;44856:19:96;;44764:7;44856:19;;;:11;:19;;;;;;44929:81;44868:6;44856:19;44993:8;45003:6;44929:35;:81::i;:::-;44922:88;44609:408;-1:-1:-1;;;;;44609:408:96:o;21094:486::-;2400:10;-1:-1:-1;;;;;2422:15:96;2400:38;;;:80;;-1:-1:-1;2442:10:96;-1:-1:-1;;;;;2464:15:96;2442:38;;2400:80;2379:182;;;;-1:-1:-1;;;2379:182:96;;;;;;;:::i;:::-;21322:19:::1;21334:6;21322:11;:19::i;:::-;21318:256;;;-1:-1:-1::0;;;;;21376:19:96;;::::1;21357:16;21376:19:::0;;;:11:::1;:19;::::0;;;;;::::1;21466:97;21376:19:::0;21388:6;21537:8;21555:6;21466:23:::1;:97::i;17815:458::-:0;5767:7:101;;1549:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;18099:9:96::1;18094:173;18114:22:::0;;::::1;18094:173;;;18157:99;18183:11;;18195:1;18183:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18199:6;;18206:1;18199:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18210:22;;18233:1;18210:25;;;;;;;:::i;:::-;;;;;;;18237:15;;18253:1;18237:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18157:25;:99::i;:::-;18138:3;::::0;::::1;:::i;:::-;;;18094:173;;;;17815:458:::0;;;;;;;;;:::o;40650:137::-;-1:-1:-1;;;;;40746:19:96;;;40722:4;40746:19;;;:11;:19;;;;;;;:33;;;40650:137::o;4326:136:101:-;2124:14;;:35;;-1:-1:-1;;;2124:35:101;;2148:10;2124:35;;;7905:51:120;-1:-1:-1;;;;;2124:14:101;;;;:23;;7878:18:120;;2124:35:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:88;;;;-1:-1:-1;;;2116:88:101;;;;;;;:::i;:::-;-1:-1:-1;;4376:7:101::1;:27:::0;;;4418:37:::1;::::0;160:25:120;;;4425:10:101::1;::::0;4418:37:::1;::::0;148:2:120;133:18;4418:37:101::1;;;;;;;4326:136::o:0;44157:164:96:-;44255:7;44302:10;44291:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;44281:33;;;;;;44274:40;;44157:164;;;:::o;18510:2042::-;18664:9;18659:1887;18683:20;:27;18679:1;:31;18659:1887;;;18727:77;18807:20;18828:1;18807:23;;;;;;;;:::i;:::-;;;;;;;18727:103;;18903:14;18919:25;18948:15;-1:-1:-1;;;;;18948:39:96;;18988:19;18948:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18902:106;;;;19088:9;19084:1393;;;19134:26;;;;;-1:-1:-1;;;;;19263:35:96;;19117:14;19263:35;;;:27;:35;;;;;;;19134:26;;19263:35;;;19316:37;19263:35;19316:37;:::i;:::-;;;;;;19372:36;19411:448;;;;;;;;19452:6;-1:-1:-1;;;;;19411:448:96;;;;;19493:19;:36;;;-1:-1:-1;;;;;19411:448:96;;;;;19563:19;:38;;;:49;;;-1:-1:-1;;;;;19411:448:96;;;;;19641:5;19411:448;;;;19680:19;:40;;;19411:448;;;;;;19754:19;:30;;;19411:448;;;;19814:19;:26;;;19411:448;;;19372:487;;19920:15;19938:43;19962:18;19938:23;:43::i;:::-;20133:27;;;;:18;:27;;;;;;19920:61;;-1:-1:-1;20133:27:96;;20132:28;20103:168;;;;-1:-1:-1;;;20103:168:96;;38975:2:120;20103:168:96;;;38957:21:120;39014:2;38994:18;;;38987:30;39053:34;39033:18;;;39026:62;39124:34;39104:18;;;39097:62;-1:-1:-1;;;39175:19:120;;;39168:36;39221:19;;20103:168:96;38773:473:120;20103:168:96;20289:27;;;;:18;:27;;;;;;;:34;;-1:-1:-1;;20289:34:96;20319:4;20289:34;;;20347:45;;;;;20308:7;;20373:18;;20347:45;:::i;:::-;;;;;;;;20416:46;;;39770:25:120;;;39826:2;39811:18;;39804:34;;;20416:46:96;;39743:18:120;20416:46:96;;;;;;;19099:1378;;;;19084:1393;20518:3;;;;;18713:1833;;;18659:1887;;;;18510:2042;:::o;16741:340::-;5767:7:101;;1549:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;16990:84:96::1;17016:10;17028:6;;17036:20;17058:15;16990:25;:84::i;:::-;16741:340:::0;;;;;;:::o;40894:162::-;-1:-1:-1;;;;;40991:26:96;;;40967:4;40991:26;;;:16;:26;;;;;:43;;:57;;;40894:162::o;2071:101:37:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;9662:1198:96:-;10016:15;9981:24;:31;;;:50;;9960:162;;;;-1:-1:-1;;;9960:162:96;;40051:2:120;9960:162:96;;;40033:21:120;40090:2;40070:18;;;40063:30;40129:34;40109:18;;;40102:62;40200:34;40180:18;;;40173:62;-1:-1:-1;;;40251:19:120;;;40244:32;40293:19;;9960:162:96;39849:469:120;9960:162:96;10203:26;10232:11;:19;10244:6;-1:-1:-1;;;;;10232:19:96;-1:-1:-1;;;;;10232:19:96;;;;;;;;;;;;;10203:48;;10261:24;10300:106;10336:6;10344:18;10364:8;10374:24;:31;;;10300:35;:106::i;:::-;-1:-1:-1;;;;;10440:19:96;;;;;;:11;:19;;;;;10483:1;10462:22;;10440:44;;10630:34;;10261:145;;-1:-1:-1;10559:106:96;;10452:6;;10261:145;;10559:44;:106::i;:::-;10784:69;10794:6;10802:8;10812:26;10840:12;10784:9;:69::i;:::-;9912:948;;9662:1198;;;;;:::o;22864:1751::-;5767:7:101;;1711:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;23134:15:96::1;23106:17;:24;;;:43;;23085:157;;;::::0;-1:-1:-1;;;23085:157:96;;40525:2:120;23085:157:96::1;::::0;::::1;40507:21:120::0;40564:2;40544:18;;;40537:30;-1:-1:-1;;;;;;;;;;;40583:18:120;;;40576:62;40674:34;40654:18;;;40647:62;-1:-1:-1;;;40725:19:120;;;40718:34;40769:19;;23085:157:96::1;40323:471:120::0;23085:157:96::1;23316:40;23291:10;23273:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;23273:39:96;::::1;::::0;;;;;;;;::::1;;::::0;:83;::::1;;;;;;:::i;:::-;;;23252:198;;;::::0;-1:-1:-1;;;23252:198:96;;41001:2:120;23252:198:96::1;::::0;::::1;40983:21:120::0;41040:2;41020:18;;;41013:30;;;-1:-1:-1;;;;;;;;;;;41059:18:120;;;41052:62;41150:34;41130:18;;;41123:62;-1:-1:-1;;;41201:19:120;;;41194:35;41246:19;;23252:198:96::1;40799:472:120::0;23252:198:96::1;-1:-1:-1::0;;;;;23482:29:96;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;23512:22;;::::1;::::0;23482:53;;;;;;;;::::1;;23481:54;23460:160;;;::::0;-1:-1:-1;;;23460:160:96;;41478:2:120;23460:160:96::1;::::0;::::1;41460:21:120::0;41517:2;41497:18;;;41490:30;-1:-1:-1;;;;;;;;;;;41536:18:120;;;41529:62;41627:29;41607:18;;;41600:57;41674:19;;23460:160:96::1;41276:423:120::0;23460:160:96::1;23651:20;23662:8;23651:10;:20::i;:::-;23630:137;;;::::0;-1:-1:-1;;;23630:137:96;;41906:2:120;23630:137:96::1;::::0;::::1;41888:21:120::0;41945:2;41925:18;;;41918:30;-1:-1:-1;;;;;;;;;;;41964:18:120;;;41957:62;42055:34;42035:18;;;42028:62;-1:-1:-1;;;42106:19:120;;;42099:49;42165:19;;23630:137:96::1;41704:486:120::0;23630:137:96::1;23815:38;23856:203;23923:8;23950:10;23980:17;:22;;;24024:17;:24;;;23856:42;:203::i;:::-;23815:244;;24115:137;24173:8;24183:30;24215:17;:27;;;24115:44;:137::i;:::-;24323:10;24305:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;24305:39:96;::::1;::::0;;;;;;;;;:82;;24347:40:::1;-1:-1:-1::0;;24305:82:96;;::::1;::::0;::::1;::::0;;;24432:19:::1;:29:::0;;;;;24462:22;;::::1;::::0;24432:53;;;;;;;;;:60;;;;::::1;::::0;::::1;::::0;;;24508:100;24305:39;;24508:100:::1;::::0;::::1;::::0;24347:40;24508:100:::1;:::i;:::-;;;;;;;;23075:1540;22864:1751:::0;;;:::o;6075:276::-;6180:22;6191:10;6180;:22::i;:::-;6172:106;;;;-1:-1:-1;;;6172:106:96;;42397:2:120;6172:106:96;;;42379:21:120;42436:2;42416:18;;;42409:30;42475:34;42455:18;;;42448:62;42546:34;42526:18;;;42519:62;-1:-1:-1;;;42597:19:120;;;42590:38;42645:19;;6172:106:96;42195:475:120;6172:106:96;6320:10;-1:-1:-1;;;;;6293:51:96;;6332:11;;6293:51;;;;;;;:::i;:::-;;;;;;;;6075:276;;:::o;47626:508::-;47885:75;;;1446:81:97;47885:75:96;;;42934:25:120;-1:-1:-1;;;;;43033:15:120;;;43013:18;;;43006:43;;;;43085:15;;;43065:18;;;43058:43;43117:18;;;43110:34;;;43160:19;;;43153:35;;;47798:7:96;;;;42906:19:120;;47885:75:96;;;;;;;;;;;;;47875:86;;;;;;47854:107;;48008:18;48068:17;:15;:17::i;:::-;48039:59;;-1:-1:-1;;;48039:59:96;;;28017:27:120;28060:11;;;28053:27;;;;28096:12;;;28089:28;;;28133:12;;48039:59:96;;;;;;-1:-1:-1;;48039:59:96;;;;;;48029:70;;48039:59;48029:70;;;;;47626:508;-1:-1:-1;;;;;;;47626:508:96:o;24775:610::-;5767:7:101;;1711:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;24987:40:96::1;24962:10;24944:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;24944:39:96;::::1;::::0;;;;;;;;::::1;;::::0;:83;::::1;;;;;;:::i;:::-;;24923:198;;;::::0;-1:-1:-1;;;24923:198:96;;43401:2:120;24923:198:96::1;::::0;::::1;43383:21:120::0;43440:2;43420:18;;;43413:30;;;43479:34;43459:18;;;43452:62;43550:34;43530:18;;;43523:62;-1:-1:-1;;;43601:19:120;;;43594:35;43646:19;;24923:198:96::1;43199:472:120::0;24923:198:96::1;25194:10;25218:42;25176:29:::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;25176:39:96;::::1;::::0;;;;;;;;:84;;-1:-1:-1;;25176:84:96::1;::::0;;25276:102;25176:39;;25276:102:::1;::::0;::::1;::::0;25218:42;25276:102:::1;:::i;:::-;;;;;;;;24775:610:::0;;:::o;6556:150::-;6675:10;-1:-1:-1;;;;;6653:46:96;;6687:11;;6653:46;;;;;;;:::i;45447:550::-;45728:78;;;935:91:97;45728:78:96;;;42934:25:120;-1:-1:-1;;;;;43033:15:120;;;43013:18;;;43006:43;;;;43085:15;;;43065:18;;;43058:43;43117:18;;;43110:34;;;43160:19;;;43153:35;;;45623:7:96;;;;42906:19:120;;45728:78:96;42675:519:120;42301:1790:96;42516:38;;-1:-1:-1;;;42516:38:96;;-1:-1:-1;;;;;7923:32:120;;;42516:38:96;;;7905:51:120;42382:18:96;;;;-1:-1:-1;;42516:15:96;:30;;;;;;7878:18:120;;42516:38:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42662:35;;-1:-1:-1;;;42662:35:96;;-1:-1:-1;;;;;7923:32:120;;;42662:35:96;;;7905:51:120;42497:57:96;;-1:-1:-1;;;;;42662:15:96;:27;;;;;;7878:18:120;;42662:35:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42662:35:96;;;;;;;;;;;;:::i;:::-;42565:132;;;;42810:1;42797:9;:14;42793:98;;42835:21;;42858;;-1:-1:-1;42301:1790:96;-1:-1:-1;;;42301:1790:96:o;42793:98::-;42901:29;42940:23;42978:21;:28;43010:1;42978:33;42974:1073;;;43113:18;;;43129:1;43113:18;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43154:16:96;;;43168:1;43154:16;;;;;;;;;43100:31;;-1:-1:-1;43168:1:96;-1:-1:-1;43154:16:96;;;;;;;;;;;-1:-1:-1;43154:16:96;43145:25;;2135:42;43184:10;43195:1;43184:13;;;;;;;;:::i;:::-;;;;;;:38;-1:-1:-1;;;;;43184:38:96;;;-1:-1:-1;;;;;43184:38:96;;;;;43256:9;43236:6;43243:1;43236:9;;;;;;;;:::i;:::-;;;;;;:30;;;;;42974:1073;;;43402:28;;:32;;43433:1;43402:32;:::i;:::-;-1:-1:-1;;;;;43386:49:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43386:49:96;;43373:62;;43472:10;:17;-1:-1:-1;;;;;43458:32:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43458:32:96;;43449:41;;43581:9;43576:254;43600:21;:28;43596:1;:32;43576:254;;;43665:21;43687:1;43665:24;;;;;;;;:::i;:::-;;;;;;;43649:10;43660:1;43649:13;;;;;;;;:::i;:::-;;;;;;:40;-1:-1:-1;;;;;43649:40:96;;;-1:-1:-1;;;;;43649:40:96;;;;;43719:21;43741:1;43719:24;;;;;;;;:::i;:::-;;;;;;;43707:6;43714:1;43707:9;;;;;;;;:::i;:::-;;;;;;;;;;:36;43794:3;;43576:254;;;;2135:42;43914:10;43945:1;43925:10;:17;:21;;;;:::i;:::-;43914:33;;;;;;;;:::i;:::-;;;;;;:58;-1:-1:-1;;;;;43914:58:96;;;-1:-1:-1;;;;;43914:58:96;;;;;44026:9;43986:6;44013:1;43993:10;:17;:21;;;;:::i;:::-;43986:29;;;;;;;;:::i;:::-;;;;;;:50;;;;;42974:1073;44065:10;;44077:6;;-1:-1:-1;42301:1790:96;-1:-1:-1;;;;;42301:1790:96:o;11185:2248::-;5767:7:101;;11302:32:96;;1405:1;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;11354:19:96::1;11366:6;11354:11;:19::i;:::-;11346:100;;;::::0;-1:-1:-1;;;11346:100:96;;46772:2:120;11346:100:96::1;::::0;::::1;46754:21:120::0;46811:2;46791:18;;;46784:30;;;46850:34;46830:18;;;46823:62;46921:34;46901:18;;;46894:62;-1:-1:-1;;;46972:19:120;;;46965:35;47017:19;;11346:100:96::1;46570:472:120::0;11346:100:96::1;11465:18;11476:6;11465:10;:18::i;:::-;11464:19;11456:93;;;::::0;-1:-1:-1;;;11456:93:96;;47249:2:120;11456:93:96::1;::::0;::::1;47231:21:120::0;47288:2;47268:18;;;47261:30;47327:34;47307:18;;;47300:62;47398:31;47378:18;;;47371:59;47447:19;;11456:93:96::1;47047:425:120::0;11456:93:96::1;-1:-1:-1::0;;;;;11567:20:96;::::1;11559:93;;;::::0;-1:-1:-1;;;11559:93:96;;47679:2:120;11559:93:96::1;::::0;::::1;47661:21:120::0;47718:2;47698:18;;;47691:30;47757:34;47737:18;;;47730:62;47828:30;47808:18;;;47801:58;47876:19;;11559:93:96::1;47477:424:120::0;11559:93:96::1;-1:-1:-1::0;;;;;11681:19:96;;::::1;11662:16;11681:19:::0;;;:11:::1;:19;::::0;;;;;;;::::1;::::0;11731:10:::1;:20;::::0;:46:::1;;-1:-1:-1::0;11755:10:96::1;-1:-1:-1::0;;;;;11755:22:96;::::1;;11731:46;:125;;;-1:-1:-1::0;;;;;;11811:26:96;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:45:::1;;::::0;::::1;11797:10;:59;11731:125;11710:233;;;::::0;-1:-1:-1;;;11710:233:96;;48108:2:120;11710:233:96::1;::::0;::::1;48090:21:120::0;48147:2;48127:18;;;48120:30;48186:34;48166:18;;;48159:62;48257:31;48237:18;;;48230:59;48306:19;;11710:233:96::1;47906:425:120::0;11710:233:96::1;12121:29;12152:23:::0;12179:28:::1;12200:6;12179:20;:28::i;:::-;12120:87:::0;;-1:-1:-1;12120:87:96;-1:-1:-1;12305:10:96::1;-1:-1:-1::0;;;;;12305:20:96;::::1;;12301:96;;12377:8;-1:-1:-1::0;;;;;12346:40:96::1;12369:6;-1:-1:-1::0;;;;;12346:40:96::1;;;;;;;;;;;12301:96;12471:8;-1:-1:-1::0;;;;;12445:35:96::1;12463:6;-1:-1:-1::0;;;;;12445:35:96::1;;;;;;;;;;;-1:-1:-1::0;;;;;12490:19:96;::::1;12520:1;12490:19:::0;;;:11:::1;:19;::::0;;;;:32;;-1:-1:-1;;;;;;12490:32:96::1;::::0;;12626:17;;12622:772:::1;;12682:16;::::0;;12696:1:::1;12682:16:::0;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;12622:772:96::1;;;12761:10;:17;-1:-1:-1::0;;;;;12747:32:96::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12747:32:96::1;;12729:50;;12798:9;12793:591;12817:10;:17;12813:1;:21;12793:591;;;12895:18;::::0;;12911:1:::1;12895:18:::0;;;;;::::1;::::0;;;12859:33:::1;::::0;12895:18:::1;::::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;12962:16:96::1;::::0;;12976:1:::1;12962:16:::0;;;;;::::1;::::0;;;12859:54;;-1:-1:-1;12931:28:96::1;::::0;12962:16;-1:-1:-1;12962:16:96::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12962:16:96::1;12931:47;;13016:10;13027:1;13016:13;;;;;;;;:::i;:::-;;;;;;;12996:14;13011:1;12996:17;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1::0;;;;;12996:33:96::1;;;-1:-1:-1::0;;;;;12996:33:96::1;;;::::0;::::1;13064:6;13071:1;13064:9;;;;;;;;:::i;:::-;;;;;;;13047:11;13059:1;13047:14;;;;;;;;:::i;:::-;;;;;;:26;;;::::0;::::1;13113:256;13175:6;13213:8;13255:6;13295:14;13339:11;13113:31;:256::i;:::-;13092:15;13108:1;13092:18;;;;;;;;:::i;:::-;;;;;;:277;;;::::0;::::1;12841:543;;12836:3;;;;;:::i;:::-;;;;12793:591;;;;12622:772;13404:22;;;11185:2248:::0;;;;:::o;3225:432::-;3111:19:38;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:38;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:38;1476:19:39;:23;;;3219:66:38;;-1:-1:-1;3268:12:38;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:38;;48538:2:120;3157:201:38;;;48520:21:120;48577:2;48557:18;;;48550:30;48616:34;48596:18;;;48589:62;-1:-1:-1;;;48667:18:120;;;48660:44;48721:19;;3157:201:38;48336:410:120;3157:201:38;3368:12;:16;;-1:-1:-1;;3368:16:38;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:38;;;;;3394:65;3430:55:96::1;3448:15;3465:19;3430:17;:55::i;:::-;3515:27;:25;:27::i;:::-;3495:17;:47:::0;3552:32:::1;3571:12:::0;3552:18:::1;:32::i;:::-;3594:56;3627:22;3594:32;:56::i;:::-;3483:14:38::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:38;;;3553:14;;-1:-1:-1;48903:36:120;;3553:14:38;;48891:2:120;48876:18;3553:14:38;;;;;;;3479:99;3101:483;3225:432:96;;;;:::o;7709:352::-;7981:73;7991:10;8003:8;8013:26;8041:12;7981:9;:73::i;5576:279::-;5693:22;5704:10;5693;:22::i;:::-;5685:102;;;;-1:-1:-1;;;5685:102:96;;49152:2:120;5685:102:96;;;49134:21:120;49191:2;49171:18;;;49164:30;49230:34;49210:18;;;49203:62;49301:34;49281:18;;;49274:62;-1:-1:-1;;;49352:19:120;;;49345:34;49396:19;;5685:102:96;48950:471:120;5685:102:96;5797:51;5817:10;5829:18;5797:19;:51::i;2321:198:37:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:37;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:37;;49628:2:120;2401:73:37::1;::::0;::::1;49610:21:120::0;49667:2;49647:18;;;49640:30;49706:34;49686:18;;;49679:62;-1:-1:-1;;;49757:18:120;;;49750:36;49803:19;;2401:73:37::1;49426:402:120::0;2401:73:37::1;2484:28;2503:8;2484:18;:28::i;40311:227:96:-:0;40359:7;40399:17;40382:13;:34;40378:154;;;-1:-1:-1;40439:17:96;;;40311:227::o;40378:154::-;40494:27;:25;:27::i;:::-;40487:34;;40311:227;:::o;4938:439:101:-;2284:14;;;;;;;;;-1:-1:-1;;;;;2284:14:101;-1:-1:-1;;;;;2284:23:101;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2270:39:101;:10;-1:-1:-1;;;;;2270:39:101;;2262:94;;;;-1:-1:-1;;;2262:94:101;;;;;;;:::i;:::-;5205:7:::1;;5204:8;5182:15;5181:16;5169:7;;5168:8;5167:31;5166:47;5145:138;;;::::0;-1:-1:-1;;;5145:138:101;;50035:2:120;5145:138:101::1;::::0;::::1;50017:21:120::0;50074:2;50054:18;;;50047:30;50113:34;50093:18;;;50086:62;50184:26;50164:18;;;50157:54;50228:19;;5145:138:101::1;49833:420:120::0;5145:138:101::1;5293:7;:25:::0;;;5333:37:::1;::::0;160:25:120;;;5342:10:101::1;::::0;5333:37:::1;::::0;148:2:120;133:18;5333:37:101::1;14:177:120::0;36033:2579:96;36248:7;-1:-1:-1;;;;;36288:20:96;;36267:135;;;;-1:-1:-1;;;36267:135:96;;50460:2:120;36267:135:96;;;50442:21:120;50499:2;50479:18;;;50472:30;50538:34;50518:18;;;50511:62;50609:34;50589:18;;;50582:62;-1:-1:-1;;;50660:19:120;;;50653:47;50717:19;;36267:135:96;50258:484:120;36267:135:96;36420:17;;36412:112;;;;-1:-1:-1;;;36412:112:96;;50949:2:120;36412:112:96;;;50931:21:120;50988:2;50968:18;;;50961:30;51027:34;51007:18;;;51000:62;51098:34;51078:18;;;51071:62;-1:-1:-1;;;51149:19:120;;;51142:44;51203:19;;36412:112:96;50747:481:120;36412:112:96;36678:9;36673:1213;36697:10;:17;36693:1;:21;36673:1213;;;-1:-1:-1;;;;;36781:22:96;;;36777:166;;36823:105;36858:8;36876:6;36894:10;36905:1;36894:13;;;;;;;;:::i;:::-;;;;;;;36917:6;36924:1;36917:9;;;;;;;;:::i;:::-;;;;;;;36823:23;:105::i;:::-;2135:42;-1:-1:-1;;;;;37034:39:96;:10;37045:1;37034:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;37034:39:96;;37030:786;;;37542:15;-1:-1:-1;;;;;37542:28:96;;37571:6;37579;37586:1;37579:9;;;;;;;;:::i;:::-;;;;;;;37542:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;51425:32:120;;;;51407:51;;51489:2;51474:18;;51467:34;51395:2;51380:18;;51233:274;37542:47:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37030:786;;;37739:15;-1:-1:-1;;;;;37739:28:96;;37768:6;37776:10;37787:1;37776:13;;;;;;;;:::i;:::-;;;;;;;37791:6;37798:1;37791:9;;;;;;;;:::i;:::-;;;;;;;37739:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37030:786;37858:3;;36673:1213;;;-1:-1:-1;;;;;;37973:35:96;;37957:13;37973:35;;;:27;:35;;;;;;;;;;;38018:37;37973:35;38018:37;:::i;:::-;;;;;;38066:28;38097:257;;;;;;;;38130:6;-1:-1:-1;;;;;38097:257:96;;;;;38163:8;-1:-1:-1;;;;;38097:257:96;;;;;38197:10;-1:-1:-1;;;;;38097:257:96;;;;;38228:5;38097:257;;;;38266:12;38097:257;;;;;;38305:10;38097:257;;;;38337:6;38097:257;;;38066:288;;38365:22;38390:35;38414:10;38390:23;:35::i;:::-;38473:34;;;;:18;:34;;;;;;;:41;;-1:-1:-1;;38473:41:96;38510:4;38473:41;;;38530:44;38365:60;;-1:-1:-1;38530:44:96;;;;38365:60;;38563:10;;38530:44;:::i;:::-;;;;;;;;38591:14;36033:2579;-1:-1:-1;;;;;;;;36033:2579:96:o;25841:907::-;26020:1;25973:35;;;;:18;:35;:::i;:::-;-1:-1:-1;;;;;25973:49:96;;;25952:180;;;;-1:-1:-1;;;25952:180:96;;52113:2:120;25952:180:96;;;52095:21:120;52152:2;52132:18;;;52125:30;52191:34;52171:18;;;52164:62;52262:34;52242:18;;;52235:62;-1:-1:-1;;;52313:19:120;;;52306:51;52374:19;;25952:180:96;51911:488:120;25952:180:96;1991:15;26163:43;;;;;;;;:::i;:::-;:79;;;;26142:234;;;;-1:-1:-1;;;26142:234:96;;52856:2:120;26142:234:96;;;52838:21:120;52895:3;52875:18;;;52868:31;52935:34;52915:18;;;52908:62;53006:34;52986:18;;;52979:62;53078:34;53057:19;;;53050:63;-1:-1:-1;;;53129:19:120;;;53122:43;53182:19;;26142:234:96;52654:553:120;26142:234:96;-1:-1:-1;;;;;26454:26:96;;;;;;:16;:26;;;;;;;:51;;;-1:-1:-1;;;26454:51:96;;;;;26407:43;;;;;;;;;:::i;:::-;:98;;;;26386:228;;;;-1:-1:-1;;;26386:228:96;;53414:2:120;26386:228:96;;;53396:21:120;53453:2;53433:18;;;53426:30;53492:34;53472:18;;;53465:62;53563:34;53543:18;;;53536:62;-1:-1:-1;;;53614:19:120;;;53607:50;53674:19;;26386:228:96;53212:487:120;26386:228:96;-1:-1:-1;;;;;26624:26:96;;;;;;:16;:26;;;;;26653:18;;26624:47;26653:18;26624:26;:47;:::i;:::-;-1:-1:-1;;26686:55:96;;26710:10;;26686:55;;;;26722:18;;26686:55;:::i;27578:2763::-;5767:7:101;;1268:1:96;;5738::101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;27815:19:96::1;27827:6;27815:11;:19::i;:::-;27814:20;27806:98;;;::::0;-1:-1:-1;;;27806:98:96;;54871:2:120;27806:98:96::1;::::0;::::1;54853:21:120::0;54910:2;54890:18;;;54883:30;54949:34;54929:18;;;54922:62;55020:34;55000:18;;;54993:62;-1:-1:-1;;;55071:19:120;;;55064:32;55113:19;;27806:98:96::1;54669:469:120::0;27806:98:96::1;27922:20;27933:8;27922:10;:20::i;:::-;27914:102;;;::::0;-1:-1:-1;;;27914:102:96;;55345:2:120;27914:102:96::1;::::0;::::1;55327:21:120::0;55384:2;55364:18;;;55357:30;55423:34;55403:18;;;55396:62;55494:34;55474:18;;;55467:62;-1:-1:-1;;;55545:19:120;;;55538:36;55591:19;;27914:102:96::1;55143:473:120::0;27914:102:96::1;-1:-1:-1::0;;;;;28182:26:96;;::::1;28152:27;28182:26:::0;;;:16:::1;:26;::::0;;;;:45:::1;;::::0;::::1;28644:33:::0;;;::::1;::::0;:70:::1;;-1:-1:-1::0;28681:10:96::1;-1:-1:-1::0;;;;;28681:33:96;::::1;;;28644:70;:96;;;;-1:-1:-1::0;28718:10:96::1;-1:-1:-1::0;;;;;28718:22:96;::::1;;;28644:96;28640:1171;;;28860:15;28823:26;:33;;;:52;;28798:166;;;::::0;-1:-1:-1;;;28798:166:96;;55823:2:120;28798:166:96::1;::::0;::::1;55805:21:120::0;55862:2;55842:18;;;55835:30;55901:34;55881:18;;;55874:62;55972:25;55952:18;;;55945:53;56015:19;;28798:166:96::1;55621:419:120::0;28798:166:96::1;-1:-1:-1::0;;;;;29096:50:96;::::1;;::::0;;;:29:::1;:50;::::0;;;;;;;:64;;;;;;;;;::::1;;29095:65;29070:179;;;::::0;-1:-1:-1;;;29070:179:96;;56247:2:120;29070:179:96::1;::::0;::::1;56229:21:120::0;56286:2;56266:18;;;56259:30;56325:34;56305:18;;;56298:62;56396:25;56376:18;;;56369:53;56439:19;;29070:179:96::1;56045:419:120::0;29070:179:96::1;-1:-1:-1::0;;;;;29263:50:96;::::1;;::::0;;;:29:::1;:50;::::0;;;;;;;:64;;;;;;;:71;;-1:-1:-1;;29263:71:96::1;29330:4;29263:71;::::0;;29527:33;::::1;::::0;29419:155:::1;::::0;29474:6;;29482:8;;29293:19;;29314:12;;29419:37:::1;:155::i;:::-;29390:184;;29647:153;29709:19;29730:18;29750:26;:36;;;29647:44;:153::i;:::-;28742:1069;28640:1171;-1:-1:-1::0;;;;;29914:19:96;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;:30;;-1:-1:-1;;;;;;29914:30:96::1;::::0;;::::1;::::0;;::::1;::::0;;29959:33;::::1;::::0;29914:19;29959:33:::1;30004:29;30035:23:::0;30062:28:::1;30083:6;30062:20;:28::i;:::-;30003:87;;;;30106:9;30101:234;30125:10;:17;30121:1;:21;30101:234;;;30159:105;30194:8;30212:6;30230:10;30241:1;30230:13;;;;;;;;:::i;:::-;;;;;;;30253:6;30260:1;30253:9;;;;;;;;:::i;:::-;;;;;;;30159:23;:105::i;:::-;30307:3;;30101:234;;;;27796:2545;;;27578:2763:::0;;;;;:::o;6081:374:101:-;-1:-1:-1;;;;;6198:40:101;;6177:160;;;;-1:-1:-1;;;6177:160:101;;56671:2:120;6177:160:101;;;56653:21:120;56710:2;56690:18;;;56683:30;56749:34;56729:18;;;56722:62;56820:34;56800:18;;;56793:62;-1:-1:-1;;;56871:19:120;;;56864:40;56921:19;;6177:160:101;56469:477:120;6177:160:101;6370:14;;6352:52;;;-1:-1:-1;;;;;6370:14:101;;;57213:34:120;;57283:15;;;57278:2;57263:18;;57256:43;6352:52:101;;57148:18:120;6352:52:101;;;;;;;6414:14;:34;;-1:-1:-1;;;;;;6414:34:101;-1:-1:-1;;;;;6414:34:101;;;;;;;;;;6081:374::o;35411:308:96:-;-1:-1:-1;;;;;35594:24:96;;;;;;;:14;:24;;;;;;;;:34;;;;;;;;;;;:44;;35632:6;;35594:24;:44;;35632:6;;35594:44;:::i;:::-;;;;;;;;35677:8;-1:-1:-1;;;;;35653:59:96;;35687:6;35695:8;35705:6;35653:59;;;;;;;;:::i;35033:247::-;-1:-1:-1;;;;;35155:24:96;;;;;;;:14;:24;;;;;;;;:34;;;;;;;;;;;:44;;35193:6;;35155:24;:44;;35193:6;;35155:44;:::i;:::-;;;;;;;;35238:8;-1:-1:-1;;;;;35214:59:96;;35248:6;35256:8;35266:6;35214:59;;;;;;;;:::i;30684:4218::-;30890:22;30915:35;;30939:10;30915:35;:::i;:::-;30969:34;;;;:18;:34;;;;;;30890:60;;-1:-1:-1;30969:34:96;;30961:109;;;;-1:-1:-1;;;30961:109:96;;57721:2:120;30961:109:96;;;57703:21:120;57760:2;57740:18;;;57733:30;-1:-1:-1;;;;;;;;;;;57779:18:120;;;57772:62;57870:32;57850:18;;;57843:60;57920:19;;30961:109:96;57519:426:120;30961:109:96;31126:21;;31151:12;;31102:21;;;;;;;;:::i;:::-;:45;;;;;;:::i;:::-;:61;;31081:195;;;;-1:-1:-1;;;31081:195:96;;58152:2:120;31081:195:96;;;58134:21:120;58191:2;58171:18;;;58164:30;-1:-1:-1;;;;;;;;;;;58210:18:120;;;58203:62;58301:34;58281:18;;;58274:62;58373:25;58352:19;;;58345:54;58416:19;;31081:195:96;57950:491:120;31081:195:96;31322:21;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31308:35:96;:10;-1:-1:-1;;;;;31308:35:96;;31287:157;;;;-1:-1:-1;;;31287:157:96;;58648:2:120;31287:157:96;;;58630:21:120;58687:2;58667:18;;;58660:30;-1:-1:-1;;;;;;;;;;;58706:18:120;;;58699:62;58797:34;58777:18;;;58770:62;-1:-1:-1;;;58848:19:120;;;58841:42;58900:19;;31287:157:96;58446:479:120;31287:157:96;31459:15;31455:211;;;31532:21;;;;:10;:21;:::i;:::-;31515:45;;;-1:-1:-1;31490:165:96;;;;-1:-1:-1;;;31490:165:96;;59132:2:120;31490:165:96;;;59114:21:120;59171:2;59151:18;;;59144:30;-1:-1:-1;;;;;;;;;;;59190:18:120;;;59183:62;59281:31;59261:18;;;59254:59;59330:19;;31490:165:96;58930:425:120;31490:165:96;31737:34;;;;:18;:34;;;;;31730:41;;-1:-1:-1;;31730:41:96;;;31913:2932;;;;31953:9;31948:437;31972:21;;;;:10;:21;:::i;:::-;:28;;31968:1;:32;31948:437;;;32021:278;32075:17;;;;:10;:17;:::i;:::-;32126:10;32168:21;;;;:10;:21;:::i;:::-;32190:1;32168:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32222:17;;;;:10;:17;:::i;:::-;32240:1;32222:20;;;;;;;:::i;:::-;;;;;;;32271:6;;32278:1;32271:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32021:23;:278::i;:::-;32349:3;;31948:437;;;;31913:2932;;;32596:10;32558:23;32584;;;:11;:23;;;;;;-1:-1:-1;;;;;32584:23:96;;32621:2214;32645:21;;;;:10;:21;:::i;:::-;:28;;32641:1;:32;32621:2214;;;2135:42;32956:21;;;;:10;:21;:::i;:::-;32978:1;32956:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32956:50:96;;32952:1798;;;33030:14;33047:17;;;;:10;:17;:::i;:::-;33030:34;-1:-1:-1;33347:36:96;-1:-1:-1;;;;;33410:15:96;:25;;33030:34;33463:17;;;;:10;:17;:::i;:::-;33481:1;33463:20;;;;;;;:::i;:::-;33410:75;;-1:-1:-1;;;;;;33410:75:96;;;;;;;-1:-1:-1;;;;;51425:32:120;;;33410:75:96;;;51407:51:120;33463:20:96;;;;;;;51474:18:120;;;51467:34;-1:-1:-1;51380:18:120;;33410:75:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33534:19:96;;;33507:24;33534:19;;;:11;:19;;;;;;33347:138;;-1:-1:-1;33534:19:96;33633:30;;33629:451;;33691:366;33755:16;33894:6;33940:21;;;;:10;:21;:::i;:::-;33962:1;33940:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34002:28;33691:23;:366::i;:::-;33008:1090;;;32952:1798;;;-1:-1:-1;;;;;34126:15:96;:25;;34152:10;34164:21;;;;:10;:21;:::i;:::-;34186:1;34164:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34190:17;;;;:10;:17;:::i;:::-;34208:1;34190:20;;;;;;;:::i;:::-;;;;;;;34126:85;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;34291:29:96;;;34287:445;;34348:361;34412:15;34550:10;34600:21;;;;:10;:21;:::i;:::-;34622:1;34600:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34662:17;;;;:10;:17;:::i;:::-;34680:1;34662:20;;;;;;;:::i;:::-;;;;;;;34348:23;:361::i;:::-;34799:3;;32621:2214;;;;32544:2301;31913:2932;34860:35;;160:25:120;;;34860:35:96;;148:2:120;133:18;34860:35:96;;;;;;;30880:4022;30684:4218;;;;;:::o;1599:130:37:-;1513:6;;-1:-1:-1;;;;;1513:6:37;929:10:40;1662:23:37;1654:68;;;;-1:-1:-1;;;1654:68:37;;60290:2:120;1654:68:37;;;60272:21:120;;;60309:18;;;60302:30;60368:34;60348:18;;;60341:62;60420:18;;1654:68:37;60088:356:120;2673:187:37;2765:6;;;-1:-1:-1;;;;;2781:17:37;;;-1:-1:-1;;;;;;2781:17:37;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1281:963:98:-;-1:-1:-1;;;;;1476:19:39;;;:23;1762:476:98;;1825:56;;-1:-1:-1;;;1825:56:98;;;1885:18;-1:-1:-1;;;;;1825:33:98;;;541:10;;1825:56;;1859:10;;1871:9;;1825:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1825:78:98;;1800:220;;;;-1:-1:-1;;;1800:220:98;;61617:2:120;1800:220:98;;;61599:21:120;61656:2;61636:18;;;61629:30;61695:34;61675:18;;;61668:62;61766:34;61746:18;;;61739:62;-1:-1:-1;;;61817:19:120;;;61810:50;61877:19;;1800:220:98;61415:487:120;1762:476:98;2116:6;-1:-1:-1;;;;;2076:46:98;:36;2090:10;2102:9;2076:13;:36::i;:::-;-1:-1:-1;;;;;2076:46:98;;2051:176;;;;-1:-1:-1;;;2051:176:98;;62109:2:120;2051:176:98;;;62091:21:120;62148:2;62128:18;;;62121:30;62187:34;62167:18;;;62160:62;62258:34;62238:18;;;62231:62;-1:-1:-1;;;62309:19:120;;;62302:38;62357:19;;2051:176:98;61907:475:120;2956:441:101;3090:14;;-1:-1:-1;;;;;3090:14:101;3082:37;:79;;;;-1:-1:-1;;;;;;3123:38:101;;;;3082:79;3061:197;;;;-1:-1:-1;;;3061:197:101;;62589:2:120;3061:197:101;;;62571:21:120;62628:2;62608:18;;;62601:30;62667:34;62647:18;;;62640:62;62738:34;62718:18;;;62711:62;-1:-1:-1;;;62789:19:120;;;62782:38;62837:19;;3061:197:101;62387:475:120;3061:197:101;3268:7;:26;;;3309:36;;160:25:120;;;3316:10:101;;3309:36;;148:2:120;133:18;3309:36:101;;;;;;;3355:35;3374:15;3355:18;:35::i;48242:193:96:-;48376:19;;;;;;;;;;;-1:-1:-1;;;48376:19:96;;;;;48338:89;;695:80:97;48338:89:96;;;63098:25:120;48366:30:96;63139:18:120;;;63132:34;48398:13:96;63182:18:120;;;63175:34;48421:4:96;63225:18:120;;;;63218:60;;;;48338:89:96;;;;;;;;;;63070:19:120;;;;48338:89:96;;;48328:100;;;;;;48242:193::o;39369:470::-;2235:6:97;39497:22:96;:53;;39476:214;;;;-1:-1:-1;;;39476:214:96;;63491:2:120;39476:214:96;;;63473:21:120;63530:3;63510:18;;;63503:31;63570:34;63550:18;;;63543:62;63641:34;63621:18;;;63614:62;63713:34;63692:19;;;63685:63;-1:-1:-1;;;63764:19:120;;;63757:49;63823:19;;39476:214:96;63289:559:120;39476:214:96;39730:21;;39705:71;;;39770:25:120;;;39826:2;39811:18;;39804:34;;;39705:71:96;;39743:18:120;39705:71:96;;;;;;;39786:21;:46;39369:470::o;38903:460::-;-1:-1:-1;;;;;39091:34:96;;2135:42;39091:34;39087:270;;;39141:99;;-1:-1:-1;;;39141:99:96;;-1:-1:-1;;;;;39141:15:96;:38;;;;:99;;39191:6;;39212:10;;39232:6;;39141:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39087:270;;;39271:75;;-1:-1:-1;;;39271:75:96;;-1:-1:-1;;;;;64808:15:120;;;39271:75:96;;;64790:34:120;64860:15;;;64840:18;;;64833:43;64892:18;;;64885:34;;;64955:15;;;64935:18;;;64928:43;39271:15:96;:38;;;;64724:19:120;;39271:75:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:227:55;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;:::-;-1:-1:-1;4613:9:55;4402:227;-1:-1:-1;;;4402:227:55:o;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:55;;-1:-1:-1;3563:35:55;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:55;;65184:2:120;766:34:55;;;65166:21:120;65223:2;65203:18;;;65196:30;65262:26;65242:18;;;65235:54;65306:18;;766:34:55;64982:348:120;708:465:55;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:55;;65537:2:120;881:41:55;;;65519:21:120;65576:2;65556:18;;;65549:30;65615:33;65595:18;;;65588:61;65666:18;;881:41:55;65335:355:120;817:356:55;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:55;;65897:2:120;998:44:55;;;65879:21:120;65936:2;65916:18;;;65909:30;65975:34;65955:18;;;65948:62;-1:-1:-1;;;66026:18:120;;;66019:32;66068:19;;998:44:55;65695:398:120;939:234:55;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:55;;66300:2:120;1118:44:55;;;66282:21:120;66339:2;66319:18;;;66312:30;66378:34;66358:18;;;66351:62;-1:-1:-1;;;66429:18:120;;;66422:32;66471:19;;1118:44:55;66098:398:120;5810:1603:55;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:55;;-1:-1:-1;6962:30:55;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:55;;-1:-1:-1;7071:30:55;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;66728:25:120;;;66801:4;66789:17;;66769:18;;;66762:45;;;;66823:18;;;66816:34;;;66866:18;;;66859:34;;;7224:24:55;;66700:19:120;;7224:24:55;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:55;;-1:-1:-1;;7224:24:55;;;-1:-1:-1;;;;;;;7262:20:55;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:55;;-1:-1:-1;5810:1603:55;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:55;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;196:131:120:-;-1:-1:-1;;;;;271:31:120;;261:42;;251:70;;317:1;314;307:12;332:134;400:20;;429:31;400:20;429:31;:::i;:::-;332:134;;;:::o;471:667::-;566:6;574;582;590;598;651:3;639:9;630:7;626:23;622:33;619:53;;;668:1;665;658:12;619:53;707:9;694:23;726:31;751:5;726:31;:::i;:::-;776:5;-1:-1:-1;833:2:120;818:18;;805:32;846:33;805:32;846:33;:::i;:::-;898:7;-1:-1:-1;957:2:120;942:18;;929:32;970:33;929:32;970:33;:::i;:::-;471:667;;;;-1:-1:-1;1022:7:120;;1076:2;1061:18;;1048:32;;-1:-1:-1;1127:3:120;1112:19;1099:33;;471:667;-1:-1:-1;;471:667:120:o;1143:398::-;1237:8;1247:6;1301:3;1294:4;1286:6;1282:17;1278:27;1268:55;;1319:1;1316;1309:12;1268:55;-1:-1:-1;1342:20:120;;-1:-1:-1;;;;;1374:30:120;;1371:50;;;1417:1;1414;1407:12;1371:50;1454:4;1446:6;1442:17;1430:29;;1514:3;1507:4;1497:6;1494:1;1490:14;1482:6;1478:27;1474:38;1471:47;1468:67;;;1531:1;1528;1521:12;1546:511;1675:6;1683;1736:2;1724:9;1715:7;1711:23;1707:32;1704:52;;;1752:1;1749;1742:12;1704:52;1792:9;1779:23;-1:-1:-1;;;;;1817:6:120;1814:30;1811:50;;;1857:1;1854;1847:12;1811:50;1896:101;1989:7;1980:6;1969:9;1965:22;1896:101;:::i;:::-;2016:8;;1870:127;;-1:-1:-1;1546:511:120;-1:-1:-1;;;;1546:511:120:o;2062:632::-;2233:2;2285:21;;;2355:13;;2258:18;;;2377:22;;;2204:4;;2233:2;2456:15;;;;2430:2;2415:18;;;2204:4;2499:169;2513:6;2510:1;2507:13;2499:169;;;2574:13;;2562:26;;2643:15;;;;2608:12;;;;2535:1;2528:9;2499:169;;;-1:-1:-1;2685:3:120;;2062:632;-1:-1:-1;;;;;;2062:632:120:o;2699:163::-;2767:5;2812:2;2803:6;2798:3;2794:16;2790:25;2787:45;;;2828:1;2825;2818:12;2787:45;-1:-1:-1;2850:6:120;2699:163;-1:-1:-1;2699:163:120:o;2867:348::-;2919:8;2929:6;2983:3;2976:4;2968:6;2964:17;2960:27;2950:55;;3001:1;2998;2991:12;2950:55;-1:-1:-1;3024:20:120;;-1:-1:-1;;;;;3056:30:120;;3053:50;;;3099:1;3096;3089:12;3053:50;3136:4;3128:6;3124:17;3112:29;;3188:3;3181:4;3172:6;3164;3160:19;3156:30;3153:39;3150:59;;;3205:1;3202;3195:12;3220:555;3336:6;3344;3352;3405:3;3393:9;3384:7;3380:23;3376:33;3373:53;;;3422:1;3419;3412:12;3373:53;3445:62;3499:7;3488:9;3445:62;:::i;:::-;3435:72;;3558:2;3547:9;3543:18;3530:32;-1:-1:-1;;;;;3577:6:120;3574:30;3571:50;;;3617:1;3614;3607:12;3571:50;3656:59;3707:7;3698:6;3687:9;3683:22;3656:59;:::i;:::-;3220:555;;3734:8;;-1:-1:-1;3630:85:120;;-1:-1:-1;;;;3220:555:120:o;3780:272::-;3864:6;3917:2;3905:9;3896:7;3892:23;3888:32;3885:52;;;3933:1;3930;3923:12;3885:52;3972:9;3959:23;3991:31;4016:5;3991:31;:::i;:::-;4041:5;3780:272;-1:-1:-1;;;3780:272:120:o;4057:475::-;4153:6;4161;4169;4222:2;4210:9;4201:7;4197:23;4193:32;4190:52;;;4238:1;4235;4228:12;4190:52;4277:9;4264:23;4296:31;4321:5;4296:31;:::i;:::-;4346:5;-1:-1:-1;4403:2:120;4388:18;;4375:32;4416:33;4375:32;4416:33;:::i;:::-;4057:475;;4468:7;;-1:-1:-1;;;4522:2:120;4507:18;;;;4494:32;;4057:475::o;4537:180::-;4596:6;4649:2;4637:9;4628:7;4624:23;4620:32;4617:52;;;4665:1;4662;4655:12;4617:52;-1:-1:-1;4688:23:120;;4537:180;-1:-1:-1;4537:180:120:o;5617:1599::-;5882:6;5890;5898;5906;5914;5922;5930;5938;5991:3;5979:9;5970:7;5966:23;5962:33;5959:53;;;6008:1;6005;5998:12;5959:53;6048:9;6035:23;-1:-1:-1;;;;;6118:2:120;6110:6;6107:14;6104:34;;;6134:1;6131;6124:12;6104:34;6173:101;6266:7;6257:6;6246:9;6242:22;6173:101;:::i;:::-;6293:8;;-1:-1:-1;6147:127:120;-1:-1:-1;6381:2:120;6366:18;;6353:32;;-1:-1:-1;6397:16:120;;;6394:36;;;6426:1;6423;6416:12;6394:36;6465:103;6560:7;6549:8;6538:9;6534:24;6465:103;:::i;:::-;6587:8;;-1:-1:-1;6439:129:120;-1:-1:-1;6675:2:120;6660:18;;6647:32;;-1:-1:-1;6691:16:120;;;6688:36;;;6720:1;6717;6710:12;6688:36;6759:103;6854:7;6843:8;6832:9;6828:24;6759:103;:::i;:::-;6881:8;;-1:-1:-1;6733:129:120;-1:-1:-1;6969:2:120;6954:18;;6941:32;;-1:-1:-1;6985:16:120;;;6982:36;;;7014:1;7011;7004:12;6982:36;;7053:103;7148:7;7137:8;7126:9;7122:24;7053:103;:::i;:::-;5617:1599;;;;-1:-1:-1;5617:1599:120;;-1:-1:-1;5617:1599:120;;;;;;7175:8;-1:-1:-1;;;5617:1599:120:o;7221:315::-;7289:6;7297;7350:2;7338:9;7329:7;7325:23;7321:32;7318:52;;;7366:1;7363;7356:12;7318:52;7405:9;7392:23;7424:31;7449:5;7424:31;:::i;:::-;7474:5;7526:2;7511:18;;;;7498:32;;-1:-1:-1;;;7221:315:120:o;8518:388::-;8586:6;8594;8647:2;8635:9;8626:7;8622:23;8618:32;8615:52;;;8663:1;8660;8653:12;8615:52;8702:9;8689:23;8721:31;8746:5;8721:31;:::i;:::-;8771:5;-1:-1:-1;8828:2:120;8813:18;;8800:32;8841:33;8800:32;8841:33;:::i;:::-;8893:7;8883:17;;;8518:388;;;;;:::o;8911:127::-;8972:10;8967:3;8963:20;8960:1;8953:31;9003:4;9000:1;8993:15;9027:4;9024:1;9017:15;9043:363;9210:2;9195:18;;9243:1;9232:13;;9222:144;;9288:10;9283:3;9279:20;9276:1;9269:31;9323:4;9320:1;9313:15;9351:4;9348:1;9341:15;9222:144;9375:25;;;9043:363;:::o;9411:127::-;9472:10;9467:3;9463:20;9460:1;9453:31;9503:4;9500:1;9493:15;9527:4;9524:1;9517:15;9543:253;9615:2;9609:9;9657:4;9645:17;;-1:-1:-1;;;;;9677:34:120;;9713:22;;;9674:62;9671:88;;;9739:18;;:::i;:::-;9775:2;9768:22;9543:253;:::o;9801:257::-;9873:4;9867:11;;;9905:17;;-1:-1:-1;;;;;9937:34:120;;9973:22;;;9934:62;9931:88;;;9999:18;;:::i;10063:253::-;10135:2;10129:9;10177:4;10165:17;;-1:-1:-1;;;;;10197:34:120;;10233:22;;;10194:62;10191:88;;;10259:18;;:::i;10321:275::-;10392:2;10386:9;10457:2;10438:13;;-1:-1:-1;;10434:27:120;10422:40;;-1:-1:-1;;;;;10477:34:120;;10513:22;;;10474:62;10471:88;;;10539:18;;:::i;:::-;10575:2;10568:22;10321:275;;-1:-1:-1;10321:275:120:o;10601:121::-;10686:10;10679:5;10675:22;10668:5;10665:33;10655:61;;10712:1;10709;10702:12;10727:132;10794:20;;10823:30;10794:20;10823:30;:::i;10864:194::-;10935:4;-1:-1:-1;;;;;10960:6:120;10957:30;10954:56;;;10990:18;;:::i;:::-;-1:-1:-1;11035:1:120;11031:14;11047:4;11027:25;;10864:194::o;11063:759::-;11128:5;11181:3;11174:4;11166:6;11162:17;11158:27;11148:55;;11199:1;11196;11189:12;11148:55;11235:6;11222:20;11261:4;11285:71;11301:54;11352:2;11301:54;:::i;:::-;11285:71;:::i;:::-;11390:15;;;11476:1;11472:10;;;;11460:23;;11456:32;;;11421:12;;;;11500:15;;;11497:35;;;11528:1;11525;11518:12;11497:35;11564:2;11556:6;11552:15;11576:217;11592:6;11587:3;11584:15;11576:217;;;11672:3;11659:17;11689:31;11714:5;11689:31;:::i;:::-;11733:18;;11771:12;;;;11609;;11576:217;;;-1:-1:-1;11811:5:120;11063:759;-1:-1:-1;;;;;;11063:759:120:o;11827:673::-;11881:5;11934:3;11927:4;11919:6;11915:17;11911:27;11901:55;;11952:1;11949;11942:12;11901:55;11988:6;11975:20;12014:4;12038:71;12054:54;12105:2;12054:54;:::i;12038:71::-;12143:15;;;12229:1;12225:10;;;;12213:23;;12209:32;;;12174:12;;;;12253:15;;;12250:35;;;12281:1;12278;12271:12;12250:35;12317:2;12309:6;12305:15;12329:142;12345:6;12340:3;12337:15;12329:142;;;12411:17;;12399:30;;12449:12;;;;12362;;12329:142;;12505:939;12562:5;12610:4;12598:9;12593:3;12589:19;12585:30;12582:50;;;12628:1;12625;12618:12;12582:50;12650:22;;:::i;:::-;12641:31;;12695:29;12714:9;12695:29;:::i;:::-;12688:5;12681:44;12757:38;12791:2;12780:9;12776:18;12757:38;:::i;:::-;12752:2;12745:5;12741:14;12734:62;12828:38;12862:2;12851:9;12847:18;12828:38;:::i;:::-;12823:2;12816:5;12812:14;12805:62;12927:2;12916:9;12912:18;12899:32;12894:2;12887:5;12883:14;12876:56;12965:38;12998:3;12987:9;12983:19;12965:38;:::i;:::-;12959:3;12952:5;12948:15;12941:63;13055:3;13044:9;13040:19;13027:33;-1:-1:-1;;;;;13120:2:120;13112:6;13109:14;13106:34;;;13136:1;13133;13126:12;13106:34;13173:68;13237:3;13228:6;13217:9;13213:22;13173:68;:::i;:::-;13167:3;13160:5;13156:15;13149:93;13295:3;13284:9;13280:19;13267:33;13251:49;;13325:2;13315:8;13312:16;13309:36;;;13341:1;13338;13331:12;13309:36;;13378:59;13433:3;13422:8;13411:9;13407:24;13378:59;:::i;:::-;13372:3;13365:5;13361:15;13354:84;;12505:939;;;;:::o;13449:352::-;13537:6;13590:2;13578:9;13569:7;13565:23;13561:32;13558:52;;;13606:1;13603;13596:12;13558:52;13646:9;13633:23;-1:-1:-1;;;;;13671:6:120;13668:30;13665:50;;;13711:1;13708;13701:12;13665:50;13734:61;13787:7;13778:6;13767:9;13763:22;13734:61;:::i;:::-;13724:71;13449:352;-1:-1:-1;;;;13449:352:120:o;13806:269::-;13863:6;13916:2;13904:9;13895:7;13891:23;13887:32;13884:52;;;13932:1;13929;13922:12;13884:52;13971:9;13958:23;14021:4;14014:5;14010:16;14003:5;14000:27;13990:55;;14041:1;14038;14031:12;14080:504;14162:5;14210:4;14198:9;14193:3;14189:19;14185:30;14182:50;;;14228:1;14225;14218:12;14182:50;14250:22;;:::i;:::-;14241:31;;14309:9;14296:23;14328:33;14353:7;14328:33;:::i;:::-;14370:22;;14444:2;14429:18;;14416:32;14492:26;14479:40;;14467:53;;14457:81;;14534:1;14531;14524:12;14457:81;14565:2;14554:14;;14547:31;14558:5;14080:504;-1:-1:-1;;14080:504:120:o;14589:2353::-;14725:6;14756:2;14799;14787:9;14778:7;14774:23;14770:32;14767:52;;;14815:1;14812;14805:12;14767:52;14855:9;14842:23;-1:-1:-1;;;;;14925:2:120;14917:6;14914:14;14911:34;;;14941:1;14938;14931:12;14911:34;14979:6;14968:9;14964:22;14954:32;;15024:7;15017:4;15013:2;15009:13;15005:27;14995:55;;15046:1;15043;15036:12;14995:55;15082:2;15069:16;15105:71;15121:54;15172:2;15121:54;:::i;15105:71::-;15210:15;;;15292:1;15288:10;;;;15280:19;;15276:28;;;15241:12;;;;15316:19;;;15313:39;;;15348:1;15345;15338:12;15313:39;15380:2;15376;15372:11;15392:1520;15408:6;15403:3;15400:15;15392:1520;;;15494:3;15481:17;15530:2;15517:11;15514:19;15511:109;;;15574:1;15603:2;15599;15592:14;15511:109;15643:20;;15686:4;15714:16;;;-1:-1:-1;;15710:30:120;15706:39;-1:-1:-1;15703:129:120;;;15786:1;15815:2;15811;15804:14;15703:129;15858:22;;:::i;:::-;15930:2;15926;15922:11;15909:25;15963:2;15953:8;15950:16;15947:106;;;16007:1;16036:2;16032;16025:14;15947:106;16080:76;16148:7;16143:2;16132:8;16128:2;16124:17;16120:26;16080:76;:::i;:::-;16073:5;16066:91;;16181:2;16233:3;16229:2;16225:12;16212:26;16267:2;16257:8;16254:16;16251:109;;;16312:1;16342:3;16337;16330:16;16251:109;16396:65;16453:7;16448:2;16437:8;16433:2;16429:17;16425:26;16396:65;:::i;:::-;16391:2;16384:5;16380:14;16373:89;;16486:2;16525:32;16552:3;16548:2;16544:12;16525:32;:::i;:::-;16519:3;16512:5;16508:15;16501:57;16582:4;16571:15;;16623:76;16691:7;16685:3;16681:2;16677:12;16623:76;:::i;:::-;16606:15;;;16599:101;16737:32;16763:4;16755:13;;16737:32;:::i;:::-;16720:15;;;16713:57;16807:31;16826:11;;;16807:31;:::i;:::-;16801:3;16790:15;;16783:56;16852:18;;-1:-1:-1;;16890:12:120;;;;15425;;15392:1520;;;-1:-1:-1;16931:5:120;14589:2353;-1:-1:-1;;;;;;;;14589:2353:120:o;16947:118::-;17033:5;17026:13;17019:21;17012:5;17009:32;16999:60;;17055:1;17052;17045:12;17070:972;17227:6;17235;17243;17251;17259;17312:3;17300:9;17291:7;17287:23;17283:33;17280:53;;;17329:1;17326;17319:12;17280:53;17369:9;17356:23;-1:-1:-1;;;;;17439:2:120;17431:6;17428:14;17425:34;;;17455:1;17452;17445:12;17425:34;17478:22;;;;17534:3;17516:16;;;17512:26;17509:46;;;17551:1;17548;17541:12;17509:46;17574:2;;-1:-1:-1;17629:2:120;17614:18;;17601:32;;17645:16;;;17642:36;;;17674:1;17671;17664:12;17642:36;;17713:103;17808:7;17797:8;17786:9;17782:24;17713:103;:::i;:::-;17835:8;;-1:-1:-1;17687:129:120;-1:-1:-1;;17917:2:120;17902:18;;17889:32;;-1:-1:-1;17971:2:120;17956:18;;17943:32;17984:28;17943:32;17984:28;:::i;:::-;18031:5;18021:15;;;17070:972;;;;;;;;:::o;18459:530::-;18501:5;18554:3;18547:4;18539:6;18535:17;18531:27;18521:55;;18572:1;18569;18562:12;18521:55;18608:6;18595:20;-1:-1:-1;;;;;18630:2:120;18627:26;18624:52;;;18656:18;;:::i;:::-;18700:55;18743:2;18724:13;;-1:-1:-1;;18720:27:120;18749:4;18716:38;18700:55;:::i;:::-;18780:2;18771:7;18764:19;18826:3;18819:4;18814:2;18806:6;18802:15;18798:26;18795:35;18792:55;;;18843:1;18840;18833:12;18792:55;18908:2;18901:4;18893:6;18889:17;18882:4;18873:7;18869:18;18856:55;18956:1;18931:16;;;18949:4;18927:27;18920:38;;;;18935:7;18459:530;-1:-1:-1;;;18459:530:120:o;18994:421::-;19060:5;19108:4;19096:9;19091:3;19087:19;19083:30;19080:50;;;19126:1;19123;19116:12;19080:50;19148:22;;:::i;:::-;19139:31;;19206:9;19193:23;-1:-1:-1;;;;;19231:6:120;19228:30;19225:50;;;19271:1;19268;19261:12;19225:50;19298:45;19339:3;19330:6;19319:9;19315:22;19298:45;:::i;:::-;19291:5;19284:60;;19404:2;19393:9;19389:18;19376:32;19371:2;19364:5;19360:14;19353:56;18994:421;;;;:::o;19420:985::-;19591:6;19599;19607;19615;19623;19676:3;19664:9;19655:7;19651:23;19647:33;19644:53;;;19693:1;19690;19683:12;19644:53;19732:9;19719:23;19751:31;19776:5;19751:31;:::i;:::-;19801:5;-1:-1:-1;19858:2:120;19843:18;;19830:32;19871:33;19830:32;19871:33;:::i;:::-;19923:7;-1:-1:-1;19981:2:120;19966:18;;19953:32;-1:-1:-1;;;;;20034:14:120;;;20031:34;;;20061:1;20058;20051:12;20031:34;20084:70;20146:7;20137:6;20126:9;20122:22;20084:70;:::i;:::-;20074:80;;20207:2;20196:9;20192:18;20179:32;20163:48;;20236:2;20226:8;20223:16;20220:36;;;20252:1;20249;20242:12;20220:36;;20275:72;20339:7;20328:8;20317:9;20313:24;20275:72;:::i;:::-;19420:985;;;;-1:-1:-1;19420:985:120;;20394:3;20379:19;20366:33;;19420:985;-1:-1:-1;;;19420:985:120:o;20870:1027::-;20983:6;20991;21044:2;21032:9;21023:7;21019:23;21015:32;21012:52;;;21060:1;21057;21050:12;21012:52;21099:9;21086:23;21118:31;21143:5;21118:31;:::i;:::-;21168:5;-1:-1:-1;21224:2:120;21209:18;;21196:32;-1:-1:-1;;;;;21277:14:120;;;21274:34;;;21304:1;21301;21294:12;21274:34;21327:22;;;;21383:4;21365:16;;;21361:27;21358:47;;;21401:1;21398;21391:12;21358:47;21434:2;21428:9;21476:4;21468:6;21464:17;21531:6;21519:10;21516:22;21511:2;21499:10;21496:18;21493:46;21490:72;;;21542:18;;:::i;:::-;21578:2;21571:22;21618:16;;21646;;;21643:36;;;21675:1;21672;21665:12;21643:36;21703:44;21739:7;21728:8;21724:2;21720:17;21703:44;:::i;:::-;21695:6;21688:60;;21802:2;21798;21794:11;21781:25;21776:2;21768:6;21764:15;21757:50;21861:2;21857;21853:11;21840:25;21835:2;21827:6;21823:15;21816:50;21885:6;21875:16;;;;;20870:1027;;;;;:::o;21902:411::-;21973:6;21981;22034:2;22022:9;22013:7;22009:23;22005:32;22002:52;;;22050:1;22047;22040:12;22002:52;22090:9;22077:23;-1:-1:-1;;;;;22115:6:120;22112:30;22109:50;;;22155:1;22152;22145:12;22109:50;22194:59;22245:7;22236:6;22225:9;22221:22;22194:59;:::i;22318:525::-;22404:6;22412;22420;22428;22481:3;22469:9;22460:7;22456:23;22452:33;22449:53;;;22498:1;22495;22488:12;22449:53;22537:9;22524:23;22556:31;22581:5;22556:31;:::i;:::-;22606:5;-1:-1:-1;22663:2:120;22648:18;;22635:32;22676:33;22635:32;22676:33;:::i;:::-;22318:525;;22728:7;;-1:-1:-1;;;;22782:2:120;22767:18;;22754:32;;22833:2;22818:18;22805:32;;22318:525::o;23814:::-;23900:6;23908;23916;23924;23977:3;23965:9;23956:7;23952:23;23948:33;23945:53;;;23994:1;23991;23984:12;23945:53;24033:9;24020:23;24052:31;24077:5;24052:31;:::i;:::-;24102:5;-1:-1:-1;24154:2:120;24139:18;;24126:32;;-1:-1:-1;24210:2:120;24195:18;;24182:32;24223:33;24182:32;24223:33;:::i;:::-;23814:525;;;;-1:-1:-1;24275:7:120;;24329:2;24314:18;24301:32;;-1:-1:-1;;23814:525:120:o;24344:472::-;24408:3;24446:5;24440:12;24473:6;24468:3;24461:19;24499:4;24528:2;24523:3;24519:12;24512:19;;24565:2;24558:5;24554:14;24586:1;24596:195;24610:6;24607:1;24604:13;24596:195;;;24675:13;;-1:-1:-1;;;;;24671:39:120;24659:52;;24731:12;;;;24766:15;;;;24707:1;24625:9;24596:195;;;-1:-1:-1;24807:3:120;;24344:472;-1:-1:-1;;;;;24344:472:120:o;24821:435::-;24874:3;24912:5;24906:12;24939:6;24934:3;24927:19;24965:4;24994:2;24989:3;24985:12;24978:19;;25031:2;25024:5;25020:14;25052:1;25062:169;25076:6;25073:1;25070:13;25062:169;;;25137:13;;25125:26;;25171:12;;;;25206:15;;;;25098:1;25091:9;25062:169;;25261:495;25537:2;25526:9;25519:21;25500:4;25563:67;25626:2;25615:9;25611:18;25603:6;25563:67;:::i;:::-;25678:9;25670:6;25666:22;25661:2;25650:9;25646:18;25639:50;25706:44;25743:6;25735;25706:44;:::i;26316:573::-;26431:6;26439;26447;26500:2;26488:9;26479:7;26475:23;26471:32;26468:52;;;26516:1;26513;26506:12;26468:52;26555:9;26542:23;26574:31;26599:5;26574:31;:::i;:::-;26624:5;-1:-1:-1;26680:2:120;26665:18;;26652:32;-1:-1:-1;;;;;26696:30:120;;26693:50;;;26739:1;26736;26729:12;26693:50;26762:70;26824:7;26815:6;26804:9;26800:22;26762:70;:::i;:::-;26752:80;;;26879:2;26868:9;26864:18;26851:32;26841:42;;26316:573;;;;;:::o;26894:255::-;26989:6;27042:2;27030:9;27021:7;27017:23;27013:32;27010:52;;;27058:1;27055;27048:12;27010:52;27081:62;27135:7;27124:9;27081:62;:::i;28156:349::-;28358:2;28340:21;;;28397:2;28377:18;;;28370:30;28436:27;28431:2;28416:18;;28409:55;28496:2;28481:18;;28156:349::o;28510:127::-;28571:10;28566:3;28562:20;28559:1;28552:31;28602:4;28599:1;28592:15;28626:4;28623:1;28616:15;28642:340;28751:4;28809:11;28796:25;28903:2;28899:7;28888:8;28872:14;28868:29;28864:43;28844:18;28840:68;28830:96;;28922:1;28919;28912:12;28830:96;28943:33;;;;;28642:340;-1:-1:-1;;28642:340:120:o;28987:545::-;29080:4;29086:6;29146:11;29133:25;29240:2;29236:7;29225:8;29209:14;29205:29;29201:43;29181:18;29177:68;29167:96;;29259:1;29256;29249:12;29167:96;29286:33;;29338:20;;;-1:-1:-1;;;;;;29370:30:120;;29367:50;;;29413:1;29410;29403:12;29367:50;29446:4;29434:17;;-1:-1:-1;29497:1:120;29493:14;;;29477;29473:35;29463:46;;29460:66;;;29522:1;29519;29512:12;31012:127;31073:10;31068:3;31064:20;31061:1;31054:31;31104:4;31101:1;31094:15;31128:4;31125:1;31118:15;31144:135;31183:3;-1:-1:-1;;31204:17:120;;31201:43;;;31224:18;;:::i;:::-;-1:-1:-1;31271:1:120;31260:13;;31144:135::o;31762:686::-;31966:2;31951:18;;31991:20;;32020:31;31991:20;32020:31;:::i;:::-;-1:-1:-1;;;;;32116:14:120;;;32098:33;;32180:4;32168:17;;32155:31;;32195:33;32155:31;32195:33;:::i;:::-;32266:16;32259:4;32244:20;;32237:46;32332:4;32320:17;;32307:31;32347:32;32307:31;32347:32;:::i;:::-;32430:10;32421:7;32417:24;32410:4;32399:9;32395:20;32388:54;;31762:686;;;;:::o;32453:390::-;32612:2;32601:9;32594:21;32651:6;32646:2;32635:9;32631:18;32624:34;32708:6;32700;32695:2;32684:9;32680:18;32667:48;32764:1;32735:22;;;32759:2;32731:31;;;32724:42;;;;32827:2;32806:15;;;-1:-1:-1;;32802:29:120;32787:45;32783:54;;32453:390;-1:-1:-1;32453:390:120:o;32848:251::-;32918:6;32971:2;32959:9;32950:7;32946:23;32942:32;32939:52;;;32987:1;32984;32977:12;32939:52;33019:9;33013:16;33038:31;33063:5;33038:31;:::i;33104:406::-;33306:2;33288:21;;;33345:2;33325:18;;;33318:30;33384:34;33379:2;33364:18;;33357:62;-1:-1:-1;;;33450:2:120;33435:18;;33428:40;33500:3;33485:19;;33104:406::o;33515:419::-;33717:2;33699:21;;;33756:2;33736:18;;;33729:30;33795:34;33790:2;33775:18;;33768:62;33866:25;33861:2;33846:18;;33839:53;33924:3;33909:19;;33515:419::o;33939:245::-;34006:6;34059:2;34047:9;34038:7;34034:23;34030:32;34027:52;;;34075:1;34072;34065:12;34027:52;34107:9;34101:16;34126:28;34148:5;34126:28;:::i;34189:404::-;34391:2;34373:21;;;34430:2;34410:18;;;34403:30;34469:34;34464:2;34449:18;;34442:62;-1:-1:-1;;;34535:2:120;34520:18;;34513:38;34583:3;34568:19;;34189:404::o;35023:329::-;35120:4;35178:11;35165:25;35272:3;35268:8;35257;35241:14;35237:29;35233:44;35213:18;35209:69;35199:97;;35292:1;35289;35282:12;35923:241;35979:6;36032:2;36020:9;36011:7;36007:23;36003:32;36000:52;;;36048:1;36045;36038:12;36000:52;36087:9;36074:23;36106:28;36128:5;36106:28;:::i;36169:754::-;36222:3;36267:1;36263;36258:3;36254:11;36250:19;36308:2;36300:5;36294:12;36290:21;36285:3;36278:34;36373:2;36365:4;36358:5;36354:16;36348:23;36344:32;36337:4;36332:3;36328:14;36321:56;36438:2;36430:4;36423:5;36419:16;36413:23;36409:32;36402:4;36397:3;36393:14;36386:56;;36491:4;36484:5;36480:16;36474:23;36467:4;36462:3;36458:14;36451:47;36559:10;36551:4;36544:5;36540:16;36534:23;36530:40;36523:4;36518:3;36514:14;36507:64;36617:4;36610:5;36606:16;36600:23;36655:4;36648;36643:3;36639:14;36632:28;36681:69;36744:4;36739:3;36735:14;36721:12;36681:69;:::i;:::-;36669:81;;36798:4;36791:5;36787:16;36781:23;36846:3;36840:4;36836:14;36829:4;36824:3;36820:14;36813:38;36867:50;36912:4;36896:14;36867:50;:::i;36928:269::-;37115:2;37104:9;37097:21;37078:4;37135:56;37187:2;37176:9;37172:18;37164:6;37135:56;:::i;37202:1255::-;37435:2;37424:9;37417:21;37398:4;37473:6;37467:13;37516:4;37511:2;37500:9;37496:18;37489:32;37544:74;37613:3;37602:9;37598:19;37584:12;37544:74;:::i;:::-;37530:88;;37667:2;37659:6;37655:15;37649:22;37739:2;37735:7;37723:9;37715:6;37711:22;37707:36;37702:2;37691:9;37687:18;37680:64;37767:52;37812:6;37796:14;37767:52;:::i;:::-;37753:66;;;37868:2;37860:6;37856:15;37850:22;37908:1;37904;37899:3;37895:11;37891:19;37966:2;37950:14;37946:23;37941:2;37930:9;37926:18;37919:51;38019:2;38011:6;38007:15;38001:22;37979:44;;38087:2;38070:14;38064:21;38060:30;38054:3;38043:9;38039:19;38032:59;;38164:26;38158:2;38142:14;38138:23;38132:30;38128:63;38122:3;38111:9;38107:19;38100:92;;38241:3;38233:6;38229:16;38223:23;38255:54;38304:3;38293:9;38289:19;38273:14;23335:10;23324:22;23312:35;;23259:94;38255:54;-1:-1:-1;38358:3:120;38346:16;;38340:23;-1:-1:-1;;;;;8033:31:120;;38422:4;38407:20;;8021:44;-1:-1:-1;38445:6:120;37202:1255;-1:-1:-1;;;37202:1255:120:o;38462:306::-;38538:6;38546;38599:2;38587:9;38578:7;38574:23;38570:32;38567:52;;;38615:1;38612;38605:12;38567:52;38647:9;38641:16;38666:28;38688:5;38666:28;:::i;:::-;38758:2;38743:18;;;;38737:25;38713:5;;38737:25;;-1:-1:-1;;;38462:306:120:o;39251:340::-;39466:6;39455:9;39448:25;39509:2;39504;39493:9;39489:18;39482:30;39429:4;39529:56;39581:2;39570:9;39566:18;39558:6;39529:56;:::i;44200:183::-;44269:6;44322:2;44310:9;44301:7;44297:23;44293:32;44290:52;;;44338:1;44335;44328:12;44290:52;-1:-1:-1;44361:16:120;;44200:183;-1:-1:-1;44200:183:120:o;44388:670::-;44453:5;44506:3;44499:4;44491:6;44487:17;44483:27;44473:55;;44524:1;44521;44514:12;44473:55;44553:6;44547:13;44579:4;44603:71;44619:54;44670:2;44619:54;:::i;44603:71::-;44708:15;;;44794:1;44790:10;;;;44778:23;;44774:32;;;44739:12;;;;44818:15;;;44815:35;;;44846:1;44843;44836:12;44815:35;44882:2;44874:6;44870:15;44894:135;44910:6;44905:3;44902:15;44894:135;;;44976:10;;44964:23;;45007:12;;;;44927;;44894:135;;45063:1239;45211:6;45219;45272:2;45260:9;45251:7;45247:23;45243:32;45240:52;;;45288:1;45285;45278:12;45240:52;45321:9;45315:16;-1:-1:-1;;;;;45391:2:120;45383:6;45380:14;45377:34;;;45407:1;45404;45397:12;45377:34;45445:6;45434:9;45430:22;45420:32;;45490:7;45483:4;45479:2;45475:13;45471:27;45461:55;;45512:1;45509;45502:12;45461:55;45541:2;45535:9;45563:4;45587:71;45603:54;45654:2;45603:54;:::i;45587:71::-;45692:15;;;45774:1;45770:10;;;;45762:19;;45758:28;;;45723:12;;;;45798:19;;;45795:39;;;45830:1;45827;45820:12;45795:39;45854:11;;;;45874:210;45890:6;45885:3;45882:15;45874:210;;;45963:3;45957:10;45980:31;46005:5;45980:31;:::i;:::-;46024:18;;45907:12;;;;46062;;;;45874:210;;;46139:18;;;46133:25;46103:5;;-1:-1:-1;46133:25:120;;-1:-1:-1;;;46170:16:120;;;46167:36;;;46199:1;46196;46189:12;46167:36;;46222:74;46288:7;46277:8;46266:9;46262:24;46222:74;:::i;:::-;46212:84;;;45063:1239;;;;;:::o;46307:128::-;46347:3;46378:1;46374:6;46371:1;46368:13;46365:39;;;46384:18;;:::i;:::-;-1:-1:-1;46420:9:120;;46307:128::o;46440:125::-;46480:4;46508:1;46505;46502:8;46499:34;;;46513:18;;:::i;:::-;-1:-1:-1;46550:9:120;;46440:125::o;51512:394::-;-1:-1:-1;;;;;51789:15:120;;;51771:34;;51841:15;;;;51836:2;51821:18;;51814:43;51888:2;51873:18;;51866:34;;;;51721:2;51706:18;;51512:394::o;52404:245::-;52462:6;52515:2;52503:9;52494:7;52490:23;52486:32;52483:52;;;52531:1;52528;52521:12;52483:52;52570:9;52557:23;52589:30;52613:5;52589:30;:::i;53704:195::-;53808:11;;-1:-1:-1;;;;;;53804:54:120;-1:-1:-1;;;;;53860:31:120;;;;53801:91;;;;53788:105;;53704:195::o;53904:760::-;54087:5;54074:19;54102:33;54127:7;54102:33;:::i;:::-;54144:62;54198:7;54192:4;54144:62;:::i;:::-;;54243:1;54237:4;54233:12;54293:2;54286:5;54282:14;54269:28;54306:33;54331:7;54306:33;:::i;:::-;54348:68;54408:7;54396:10;54348:68;:::i;:::-;;54464:2;54457:5;54453:14;54440:28;54477:32;54501:7;54477:32;:::i;:::-;54528:17;;-1:-1:-1;;;;54576:34:120;54639:3;54616:17;;;;-1:-1:-1;;;54612:44:120;54573:84;54554:104;;-1:-1:-1;;53904:760:120:o;57310:204::-;57420:9;57457:51;57493:14;57486:5;57457:51;:::i;:::-;57444:64;57310:204;-1:-1:-1;;57310:204:120:o;60449:666::-;60624:6;60613:9;60606:25;60587:4;60650:2;60688;60683;60672:9;60668:18;60661:30;60720:6;60714:13;60763:6;60758:2;60747:9;60743:18;60736:34;60788:1;60798:140;60812:6;60809:1;60806:13;60798:140;;;60907:14;;;60903:23;;60897:30;60873:17;;;60892:2;60869:26;60862:66;60827:10;;60798:140;;;60956:6;60953:1;60950:13;60947:91;;;61026:1;61021:2;61012:6;61001:9;60997:22;60993:31;60986:42;60947:91;-1:-1:-1;61099:2:120;61078:15;-1:-1:-1;;61074:29:120;61059:45;;;;61106:2;61055:54;;60449:666;-1:-1:-1;;;;60449:666:120:o;61120:290::-;61189:6;61242:2;61230:9;61221:7;61217:23;61213:32;61210:52;;;61258:1;61255;61248:12;61210:52;61284:16;;-1:-1:-1;;;;;;61329:32:120;;61319:43;;61309:71;;61376:1;61373;61366:12","linkReferences":{},"immutableReferences":{"47366":[{"start":10935,"length":32}],"49560":[{"start":1365,"length":32},{"start":4235,"length":32},{"start":4783,"length":32},{"start":5498,"length":32},{"start":8363,"length":32},{"start":11970,"length":32},{"start":15759,"length":32},{"start":17614,"length":32}],"49564":[{"start":2122,"length":32}],"49568":[{"start":1533,"length":32},{"start":4285,"length":32},{"start":4833,"length":32},{"start":8215,"length":32},{"start":11792,"length":32},{"start":15457,"length":32},{"start":17448,"length":32}]}},"methodIdentifiers":{"DELEGATION_APPROVAL_TYPEHASH()":"04a4f979","DOMAIN_TYPEHASH()":"20606b70","MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()":"4fc40b61","MAX_WITHDRAWAL_DELAY_BLOCKS()":"ca661c04","OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","STAKER_DELEGATION_TYPEHASH()":"43377382","avsOperatorStatus(address,address)":"49075da3","beaconChainETHStrategy()":"9104c319","calculateCurrentStakerDelegationDigestHash(address,address,uint256)":"1bbce091","calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":"0b9f487a","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","calculateStakerDelegationDigestHash(address,uint256,address,uint256)":"c94b5111","calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":"597b36da","completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":"60d7faed","completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":"33404396","cumulativeWithdrawalsQueued(address)":"a1788484","decreaseDelegatedShares(address,address,uint256)":"132d4967","delegateTo(address,(bytes,uint256),bytes32)":"eea9064b","delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":"7f548071","delegatedTo(address)":"65da1264","delegationApprover(address)":"3cdeb5e0","delegationApproverSaltIsSpent(address,bytes32)":"bb45fef2","deregisterOperatorFromAVS(address)":"a364f4da","domainSeparator()":"f698da25","earningsReceiver(address)":"5f966f14","eigenPodManager()":"4665bcda","getDelegatableShares(address)":"cf80873e","increaseDelegatedShares(address,address,uint256)":"28a573ae","initialize(address,address,uint256,uint256)":"eb990c59","isDelegated(address)":"3e28391d","isOperator(address)":"6d70f7ae","migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":"5cfe8d2c","modifyOperatorDetails((address,address,uint32))":"f16172b0","operatorDetails(address)":"c5e480db","operatorSaltIsSpent(address,bytes32)":"374823b5","operatorShares(address,address)":"778e55f3","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","pendingWithdrawals(bytes32)":"b7f06ebe","queueWithdrawals((address[],uint256[],address)[])":"0dd8dd02","registerAsOperator((address,address,uint32),string)":"0f589e59","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","renounceOwnership()":"715018a6","setPauserRegistry(address)":"10d67a2f","slasher()":"b1344271","stakerNonce(address)":"29c77d4f","stakerOptOutWindowBlocks(address)":"16928365","strategyManager()":"39b70e38","test()":"f8a8fd6d","transferOwnership(address)":"f2fde38b","undelegate(address)":"da8be864","unpause(uint256)":"fabc1cbc","updateAVSMetadataURI(string)":"a98fb355","updateOperatorMetadataURI(string)":"99be81c8","withdrawalDelayBlocks()":"50f73e7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"_strategyManager\",\"type\":\"address\"},{\"internalType\":\"contract ISlasher\",\"name\":\"_slasher\",\"type\":\"address\"},{\"internalType\":\"contract IEigenPodManager\",\"name\":\"_eigenPodManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorDetailsModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"OperatorMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"operatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerForceUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"WithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"WithdrawalQueued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"avsOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainETHStrategy\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateDelegationApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakerNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAsTokens\",\"type\":\"bool\"}],\"name\":\"completeQueuedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal[]\",\"name\":\"withdrawals\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[][]\",\"name\":\"tokens\",\"type\":\"address[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"receiveAsTokens\",\"type\":\"bool[]\"}],\"name\":\"completeQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cumulativeWithdrawalsQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"decreaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateToBySignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegatedTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"delegationApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"delegationApproverSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"earningsReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDelegatableShares\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"increaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialPausedStatus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\"}],\"name\":\"migrateQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"modifyOperatorDetails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pendingWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct IDelegationManager.QueuedWithdrawalParams[]\",\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\"}],\"name\":\"queueWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"registerAsOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakerNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stakerOptOutWindowBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateOperatorMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"params\":{\"_delegationApprover\":\"the operator's `delegationApprover` who will be signing the delegationHash (in general)\",\"approverSalt\":\"A unique and single use value associated with the approver signature.\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account receiving delegated stake\",\"staker\":\"The account delegating their stake\"}},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"params\":{\"_stakerNonce\":\"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`\",\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"details\":\"middlewareTimesIndex is unused, but will be used in the Slasher eventuallybeaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.\",\"params\":{\"middlewareTimesIndex\":\"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array\",\"receiveAsTokens\":\"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.\",\"tokens\":\"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)\",\"withdrawal\":\"The Withdrawal to complete.\"}},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"details\":\"See `completeQueuedWithdrawal` for relevant dev tags\",\"params\":{\"middlewareTimesIndexes\":\"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.\",\"receiveAsTokens\":\"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.\",\"tokens\":\"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.\",\"withdrawals\":\"The Withdrawals to complete.\"}},\"constructor\":{\"details\":\"Initializes the immutable addresses of the strategy mananger and slasher.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to decrease.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to decrease the delegated shares.\"}},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"details\":\"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"A unique single use value tied to an individual signature.\",\"approverSignatureAndExpiry\":\"Verifies the operator approves of this delegation\",\"operator\":\"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.\"}},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"details\":\"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.\",\"approverSignatureAndExpiry\":\"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:\",\"operator\":\"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.\",\"staker\":\"The account delegating stake to an `operator` account\",\"stakerSignatureAndExpiry\":\"Signed data from the staker authorizing delegating stake to an operator\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712.\"},\"getDelegatableShares(address)\":{\"details\":\"Returns two empty arrays in the case that the Staker has no actively-delegateable shares.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to increase.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to increase the delegated shares.\"}},\"initialize(address,address,uint256,uint256)\":{\"details\":\"Initializes the addresses of the initial owner, pauser registry, and paused status. withdrawalDelayBlocks is set only once here\"},\"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])\":{\"details\":\"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"details\":\"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).\",\"params\":{\"newOperatorDetails\":\"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"registerAsOperator((address,address,uint32),string)\":{\"details\":\"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \\\"delegated to themself\\\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"is a URI for the operator's metadata, i.e. a link providing more details on the operator.\",\"registeringOperatorDetails\":\"is the `OperatorDetails` for the operator.\"}},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateAVSMetadataURI(string)\":{\"params\":{\"metadataURI\":\"The URI for metadata associated with an avs\"}},\"updateOperatorMetadataURI(string)\":{\"params\":{\"metadataURI\":\"The URI for metadata associated with an operator\"}}},\"title\":\"DelegationManager\",\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"},\"OperatorDetailsModified(address,(address,address,uint32))\":{\"notice\":\"Emitted when an operator updates their OperatorDetails to @param newOperatorDetails\"},\"OperatorMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param operator indicates that they are updating their MetadataURI string\"},\"OperatorSharesDecreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are decreased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"OperatorSharesIncreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are increased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"StakerDelegated(address,address)\":{\"notice\":\"Emitted when @param staker delegates to @param operator.\"},\"StakerForceUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker is undelegated via a call not originating from the staker themself\"},\"StakerUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker undelegates from @param operator.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"},\"WithdrawalCompleted(bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is completed\"},\"WithdrawalDelayBlocksSet(uint256,uint256)\":{\"notice\":\"Emitted when the `withdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"WithdrawalMigrated(bytes32,bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is *migrated* from the StrategyManager to the DelegationManager\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Emitted when a new withdrawal is queued.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `DelegationApproval` struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `Registration` struct used by the contract\"},\"STAKER_DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `StakerDelegation` struct used by the contract\"},\"avsOperatorStatus(address,address)\":{\"notice\":\"Mapping: AVS => operator => enum of operator status to the AVS\"},\"beaconChainETHStrategy()\":{\"notice\":\"Canonical, virtual beacon chain ETH strategy\"},\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"notice\":\"Calculates the digestHash for a `staker` to sign to delegate to an `operator`\"},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions.\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"notice\":\"Calculates the digest hash to be signed and used in the `delegateToBySignature` function\"},\"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Returns the keccak256 hash of `withdrawal`.\"},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"notice\":\"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`\"},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"notice\":\"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`\"},\"cumulativeWithdrawalsQueued(address)\":{\"notice\":\"Mapping: staker => cumulative number of queued withdrawals they have ever initiated.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Decreases a staker's delegated share balance in a strategy.\"},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates their stake to an operator.\"},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates a staker's stake to an operator with valid signatures from both parties.\"},\"delegatedTo(address)\":{\"notice\":\"Mapping: staker => operator whom the staker is currently delegated to.\"},\"delegationApprover(address)\":{\"notice\":\"Returns the delegationApprover account for an operator\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover.\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"eigenPodManager()\":{\"notice\":\"The EigenPodManager contract for EigenLayer\"},\"getDelegatableShares(address)\":{\"notice\":\"Returns the number of actively-delegatable shares a staker has across all strategies.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Increases a staker's delegated share balance in a strategy.\"},\"isDelegated(address)\":{\"notice\":\"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise.\"},\"isOperator(address)\":{\"notice\":\"Returns true is an operator has previously registered for delegation.\"},\"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])\":{\"notice\":\"Migrates an array of queued withdrawals from the StrategyManager contract to this contract.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"notice\":\"Updates an operator's stored `OperatorDetails`.\"},\"operatorDetails(address)\":{\"notice\":\"Returns the OperatorDetails struct associated with an `operator`.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator.\"},\"operatorShares(address,address)\":{\"notice\":\"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"pendingWithdrawals(bytes32)\":{\"notice\":\"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending\"},\"queueWithdrawals((address[],uint256[],address)[])\":{\"notice\":\"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay.\"},\"registerAsOperator((address,address,uint32),string)\":{\"notice\":\"Registers the caller as an operator in EigenLayer.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"slasher()\":{\"notice\":\"The Slasher contract for EigenLayer\"},\"stakerNonce(address)\":{\"notice\":\"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked.\"},\"stakerOptOutWindowBlocks(address)\":{\"notice\":\"Returns the stakerOptOutWindowBlocks for an operator\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract for EigenLayer\"},\"undelegate(address)\":{\"notice\":\"Allows the staker, the staker's operator, or that operator's delegationApprover to undelegate a staker from their operator. Undelegation immediately removes ALL active shares/strategies from both the staker and operator, and places the shares and strategies in the withdrawal queue\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an avs to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"},\"updateOperatorMetadataURI(string)\":{\"notice\":\"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.\"},\"withdrawalDelayBlocks()\":{\"notice\":\"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced).\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis is the contract for delegation in EigenLayer. The main functionalities of this contract are - enabling anyone to register as an operator in EigenLayer - allowing operators to specify parameters related to stakers who delegate to them - enabling any staker to delegate its stake to the operator of its choice (a given staker can only delegate to a single operator at a time) - enabling a staker to undelegate its assets from the operator it is delegated to (performed as part of the withdrawal process, initiated through the StrategyManager)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/DelegationManager.sol\":\"DelegationManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IStrategyManager","name":"_strategyManager","type":"address"},{"internalType":"contract ISlasher","name":"_slasher","type":"address"},{"internalType":"contract IEigenPodManager","name":"_eigenPodManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorDetailsModified","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"OperatorMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"operatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesDecreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerDelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerForceUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"WithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"oldWithdrawalRoot","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newWithdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalMigrated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false},{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"indexed":false}],"type":"event","name":"WithdrawalQueued","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKER_DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"avsOperatorStatus","outputs":[{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainETHStrategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateCurrentStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateDelegationApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"_stakerNonce","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"},{"internalType":"bool","name":"receiveAsTokens","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawal"},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal[]","name":"withdrawals","type":"tuple[]","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"middlewareTimesIndexes","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawals"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeWithdrawalsQueued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateTo"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"stakerSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateToBySignature"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegatedTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"delegationApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"delegationApproverSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"earningsReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegatableShares","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"initialPausedStatus","type":"uint256"},{"internalType":"uint256","name":"_withdrawalDelayBlocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","name":"withdrawalsToMigrate","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawals"},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"modifyOperatorDetails"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorDetails","outputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pendingWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"queueWithdrawals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"registeringOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]},{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerAsOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"stakerNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stakerOptOutWindowBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"undelegate","outputs":[{"internalType":"bytes32[]","name":"withdrawalRoots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorMetadataURI"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"params":{"expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"params":{"_delegationApprover":"the operator's `delegationApprover` who will be signing the delegationHash (in general)","approverSalt":"A unique and single use value associated with the approver signature.","expiry":"Time after which the approver's signature becomes invalid","operator":"The account receiving delegated stake","staker":"The account delegating their stake"}},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"params":{"_stakerNonce":"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`","expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"details":"middlewareTimesIndex is unused, but will be used in the Slasher eventuallybeaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.","params":{"middlewareTimesIndex":"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array","receiveAsTokens":"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.","tokens":"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)","withdrawal":"The Withdrawal to complete."}},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"details":"See `completeQueuedWithdrawal` for relevant dev tags","params":{"middlewareTimesIndexes":"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.","receiveAsTokens":"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.","tokens":"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.","withdrawals":"The Withdrawals to complete."}},"constructor":{"details":"Initializes the immutable addresses of the strategy mananger and slasher."},"decreaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to decrease.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to decrease the delegated shares."}},"delegateTo(address,(bytes,uint256),bytes32)":{"details":"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"A unique single use value tied to an individual signature.","approverSignatureAndExpiry":"Verifies the operator approves of this delegation","operator":"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer."}},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"details":"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.","approverSignatureAndExpiry":"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:","operator":"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.","staker":"The account delegating stake to an `operator` account","stakerSignatureAndExpiry":"Signed data from the staker authorizing delegating stake to an operator"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712."},"getDelegatableShares(address)":{"details":"Returns two empty arrays in the case that the Staker has no actively-delegateable shares."},"increaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to increase.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to increase the delegated shares."}},"initialize(address,address,uint256,uint256)":{"details":"Initializes the addresses of the initial owner, pauser registry, and paused status. withdrawalDelayBlocks is set only once here"},"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":{"details":"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated."},"modifyOperatorDetails((address,address,uint32))":{"details":"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).","params":{"newOperatorDetails":"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`."}},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"registerAsOperator((address,address,uint32),string)":{"details":"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \"delegated to themself\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"is a URI for the operator's metadata, i.e. a link providing more details on the operator.","registeringOperatorDetails":"is the `OperatorDetails` for the operator."}},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateAVSMetadataURI(string)":{"params":{"metadataURI":"The URI for metadata associated with an avs"}},"updateOperatorMetadataURI(string)":{"params":{"metadataURI":"The URI for metadata associated with an operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATION_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the `DelegationApproval` struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `Registration` struct used by the contract"},"STAKER_DELEGATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `StakerDelegation` struct used by the contract"},"avsOperatorStatus(address,address)":{"notice":"Mapping: AVS => operator => enum of operator status to the AVS"},"beaconChainETHStrategy()":{"notice":"Canonical, virtual beacon chain ETH strategy"},"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"notice":"Calculates the digestHash for a `staker` to sign to delegate to an `operator`"},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions."},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"notice":"Calculates the digest hash to be signed and used in the `delegateToBySignature` function"},"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":{"notice":"Returns the keccak256 hash of `withdrawal`."},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"notice":"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`"},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"notice":"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`"},"cumulativeWithdrawalsQueued(address)":{"notice":"Mapping: staker => cumulative number of queued withdrawals they have ever initiated."},"decreaseDelegatedShares(address,address,uint256)":{"notice":"Decreases a staker's delegated share balance in a strategy."},"delegateTo(address,(bytes,uint256),bytes32)":{"notice":"Caller delegates their stake to an operator."},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"notice":"Caller delegates a staker's stake to an operator with valid signatures from both parties."},"delegatedTo(address)":{"notice":"Mapping: staker => operator whom the staker is currently delegated to."},"delegationApprover(address)":{"notice":"Returns the delegationApprover account for an operator"},"delegationApproverSaltIsSpent(address,bytes32)":{"notice":"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover."},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"eigenPodManager()":{"notice":"The EigenPodManager contract for EigenLayer"},"getDelegatableShares(address)":{"notice":"Returns the number of actively-delegatable shares a staker has across all strategies."},"increaseDelegatedShares(address,address,uint256)":{"notice":"Increases a staker's delegated share balance in a strategy."},"isDelegated(address)":{"notice":"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise."},"isOperator(address)":{"notice":"Returns true is an operator has previously registered for delegation."},"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":{"notice":"Migrates an array of queued withdrawals from the StrategyManager contract to this contract."},"modifyOperatorDetails((address,address,uint32))":{"notice":"Updates an operator's stored `OperatorDetails`."},"operatorDetails(address)":{"notice":"Returns the OperatorDetails struct associated with an `operator`."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator."},"operatorShares(address,address)":{"notice":"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"pendingWithdrawals(bytes32)":{"notice":"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending"},"queueWithdrawals((address[],uint256[],address)[])":{"notice":"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay."},"registerAsOperator((address,address,uint32),string)":{"notice":"Registers the caller as an operator in EigenLayer."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"slasher()":{"notice":"The Slasher contract for EigenLayer"},"stakerNonce(address)":{"notice":"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked."},"stakerOptOutWindowBlocks(address)":{"notice":"Returns the stakerOptOutWindowBlocks for an operator"},"strategyManager()":{"notice":"The StrategyManager contract for EigenLayer"},"undelegate(address)":{"notice":"Allows the staker, the staker's operator, or that operator's delegationApprover to undelegate a staker from their operator. Undelegation immediately removes ALL active shares/strategies from both the staker and operator, and places the shares and strategies in the withdrawal queue"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateAVSMetadataURI(string)":{"notice":"Called by an avs to emit an `AVSMetadataURIUpdated` event indicating the information has updated."},"updateOperatorMetadataURI(string)":{"notice":"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated."},"withdrawalDelayBlocks()":{"notice":"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced)."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/DelegationManager.sol":"DelegationManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":96} \ No newline at end of file diff --git a/out/DelegationManagerStorage.sol/DelegationManagerStorage.json b/out/DelegationManagerStorage.sol/DelegationManagerStorage.json new file mode 100644 index 00000000..8aaa8798 --- /dev/null +++ b/out/DelegationManagerStorage.sol/DelegationManagerStorage.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAKER_DELEGATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"avsOperatorStatus","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"stateMutability":"view"},{"type":"function","name":"calculateCurrentStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateDelegationApprovalDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"_stakerNonce","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"completeQueuedWithdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"},{"name":"receiveAsTokens","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeQueuedWithdrawals","inputs":[{"name":"withdrawals","type":"tuple[]","internalType":"struct IDelegationManager.Withdrawal[]","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[][]","internalType":"contract IERC20[][]"},{"name":"middlewareTimesIndexes","type":"uint256[]","internalType":"uint256[]"},{"name":"receiveAsTokens","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeWithdrawalsQueued","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decreaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateTo","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateToBySignature","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"stakerSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegatedTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApprover","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApproverSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"earningsReceiver","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"increaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegated","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawals","inputs":[{"name":"withdrawalsToQueue","type":"tuple[]","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyOperatorDetails","inputs":[{"name":"newOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorDetails","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorShares","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"queueWithdrawals","inputs":[{"name":"queuedWithdrawalParams","type":"tuple[]","internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"withdrawer","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerAsOperator","inputs":[{"name":"registeringOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]},{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerNonce","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerOptOutWindowBlocks","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"undelegate","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawalRoot","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalDelayBlocks","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"anonymous":false},{"type":"event","name":"OperatorDetailsModified","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newOperatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorMetadataURIUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorSharesDecreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSharesIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakerDelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerForceUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawalCompleted","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalDelayBlocksSet","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalMigrated","inputs":[{"name":"oldWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalQueued","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"withdrawal","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DELEGATION_APPROVAL_TYPEHASH()":"04a4f979","DOMAIN_TYPEHASH()":"20606b70","MAX_WITHDRAWAL_DELAY_BLOCKS()":"ca661c04","OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","STAKER_DELEGATION_TYPEHASH()":"43377382","avsOperatorStatus(address,address)":"49075da3","calculateCurrentStakerDelegationDigestHash(address,address,uint256)":"1bbce091","calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":"0b9f487a","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","calculateStakerDelegationDigestHash(address,uint256,address,uint256)":"c94b5111","calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":"597b36da","completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":"60d7faed","completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":"33404396","cumulativeWithdrawalsQueued(address)":"a1788484","decreaseDelegatedShares(address,address,uint256)":"132d4967","delegateTo(address,(bytes,uint256),bytes32)":"eea9064b","delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":"7f548071","delegatedTo(address)":"65da1264","delegationApprover(address)":"3cdeb5e0","delegationApproverSaltIsSpent(address,bytes32)":"bb45fef2","deregisterOperatorFromAVS(address)":"a364f4da","domainSeparator()":"f698da25","earningsReceiver(address)":"5f966f14","eigenPodManager()":"4665bcda","increaseDelegatedShares(address,address,uint256)":"28a573ae","isDelegated(address)":"3e28391d","isOperator(address)":"6d70f7ae","migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":"5cfe8d2c","modifyOperatorDetails((address,address,uint32))":"f16172b0","operatorDetails(address)":"c5e480db","operatorSaltIsSpent(address,bytes32)":"374823b5","operatorShares(address,address)":"778e55f3","pendingWithdrawals(bytes32)":"b7f06ebe","queueWithdrawals((address[],uint256[],address)[])":"0dd8dd02","registerAsOperator((address,address,uint32),string)":"0f589e59","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","slasher()":"b1344271","stakerNonce(address)":"29c77d4f","stakerOptOutWindowBlocks(address)":"16928365","strategyManager()":"39b70e38","undelegate(address)":"da8be864","updateAVSMetadataURI(string)":"a98fb355","updateOperatorMetadataURI(string)":"99be81c8","withdrawalDelayBlocks()":"50f73e7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorDetailsModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"OperatorMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"operatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerForceUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"WithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"WithdrawalQueued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"avsOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateDelegationApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakerNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAsTokens\",\"type\":\"bool\"}],\"name\":\"completeQueuedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal[]\",\"name\":\"withdrawals\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[][]\",\"name\":\"tokens\",\"type\":\"address[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"receiveAsTokens\",\"type\":\"bool[]\"}],\"name\":\"completeQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cumulativeWithdrawalsQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"decreaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateToBySignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegatedTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"delegationApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"delegationApproverSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"earningsReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"increaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"name\":\"withdrawalsToQueue\",\"type\":\"tuple[]\"}],\"name\":\"migrateQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"modifyOperatorDetails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pendingWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct IDelegationManager.QueuedWithdrawalParams[]\",\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\"}],\"name\":\"queueWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"registerAsOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakerNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stakerOptOutWindowBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateOperatorMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"params\":{\"_delegationApprover\":\"the operator's `delegationApprover` who will be signing the delegationHash (in general)\",\"approverSalt\":\"A unique and single use value associated with the approver signature.\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account receiving delegated stake\",\"staker\":\"The account delegating their stake\"}},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"params\":{\"_stakerNonce\":\"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`\",\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"details\":\"middlewareTimesIndex should be calculated off chain before calling this function by finding the first index that satisfies `slasher.canWithdraw`beaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.\",\"params\":{\"middlewareTimesIndex\":\"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array\",\"receiveAsTokens\":\"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.\",\"tokens\":\"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)\",\"withdrawal\":\"The Withdrawal to complete.\"}},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"details\":\"See `completeQueuedWithdrawal` for relevant dev tags\",\"params\":{\"middlewareTimesIndexes\":\"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.\",\"receiveAsTokens\":\"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.\",\"tokens\":\"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.\",\"withdrawals\":\"The Withdrawals to complete.\"}},\"decreaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to decrease.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to decrease the delegated shares.\"}},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"details\":\"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"A unique single use value tied to an individual signature.\",\"approverSignatureAndExpiry\":\"Verifies the operator approves of this delegation\",\"operator\":\"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.\"}},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"details\":\"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.\",\"approverSignatureAndExpiry\":\"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:\",\"operator\":\"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.\",\"staker\":\"The account delegating stake to an `operator` account\",\"stakerSignatureAndExpiry\":\"Signed data from the staker authorizing delegating stake to an operator\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to increase.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to increase the delegated shares.\"}},\"modifyOperatorDetails((address,address,uint32))\":{\"details\":\"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).\",\"params\":{\"newOperatorDetails\":\"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`.\"}},\"registerAsOperator((address,address,uint32),string)\":{\"details\":\"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \\\"delegated to themself\\\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"is a URI for the operator's metadata, i.e. a link providing more details on the operator.\",\"registeringOperatorDetails\":\"is the `OperatorDetails` for the operator.\"}},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"undelegate(address)\":{\"details\":\"Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified \\\"delegationApprover\\\"Reverts if the `staker` is already undelegated.\",\"params\":{\"staker\":\"The account to be undelegated.\"},\"returns\":{\"withdrawalRoot\":\"The root of the newly queued withdrawal, if a withdrawal was queued. Otherwise just bytes32(0).\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an AVS\"}},\"updateOperatorMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an operator\"}}},\"stateVariables\":{\"_DOMAIN_SEPARATOR\":{\"details\":\"The domain separator may change in the event of a fork that modifies the ChainID. Use the getter function `domainSeparator` to get the current domain separator for this contract.\"},\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"_operatorDetails\":{\"details\":\"This struct is internal with an external getter so we can return an `OperatorDetails memory` object\"},\"cumulativeWithdrawalsQueued\":{\"details\":\"This only increments (doesn't decrement), and is used to help ensure that otherwise identical withdrawals have unique hashes.\"},\"delegatedTo\":{\"details\":\"Note that returning address(0) indicates that the staker is not actively delegated to any operator.\"},\"delegationApproverSaltIsSpent\":{\"details\":\"Salts are used in the `delegateTo` and `delegateToBySignature` functions. Note that these functions only process the delegationApprover's signature + the provided salt if the operator being delegated to has specified a nonzero address as their `delegationApprover`.\"},\"operatorSaltIsSpent\":{\"details\":\"Salt is used in the `registerOperatorToAVS` function.\"},\"operatorShares\":{\"details\":\"By design, the following invariant should hold for each Strategy: (operator's shares in delegation manager) = sum (shares above zero of all stakers delegated to operator) = sum (delegateable shares of all stakers delegated to the operator)\"},\"withdrawalDelayBlocks\":{\"details\":\"Note that the withdrawal delay is not enforced on withdrawals of 'beaconChainETH', as the EigenPods have their own separate delay mechanic and we want to avoid stacking multiple enforced delays onto a single withdrawal.\"}},\"title\":\"Storage variables for the `DelegationManager` contract.\",\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"},\"OperatorDetailsModified(address,(address,address,uint32))\":{\"notice\":\"Emitted when an operator updates their OperatorDetails to @param newOperatorDetails\"},\"OperatorMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param operator indicates that they are updating their MetadataURI string\"},\"OperatorSharesDecreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are decreased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"OperatorSharesIncreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are increased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"StakerDelegated(address,address)\":{\"notice\":\"Emitted when @param staker delegates to @param operator.\"},\"StakerForceUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker is undelegated via a call not originating from the staker themself\"},\"StakerUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker undelegates from @param operator.\"},\"WithdrawalCompleted(bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is completed\"},\"WithdrawalDelayBlocksSet(uint256,uint256)\":{\"notice\":\"Emitted when the `withdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"WithdrawalMigrated(bytes32,bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is *migrated* from the StrategyManager to the DelegationManager\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Emitted when a new withdrawal is queued.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `DelegationApproval` struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `Registration` struct used by the contract\"},\"STAKER_DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `StakerDelegation` struct used by the contract\"},\"avsOperatorStatus(address,address)\":{\"notice\":\"Mapping: AVS => operator => enum of operator status to the AVS\"},\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"notice\":\"Calculates the digestHash for a `staker` to sign to delegate to an `operator`\"},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions.\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"notice\":\"Calculates the digest hash to be signed and used in the `delegateToBySignature` function\"},\"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Returns the keccak256 hash of `withdrawal`.\"},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"notice\":\"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`\"},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"notice\":\"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`\"},\"cumulativeWithdrawalsQueued(address)\":{\"notice\":\"Mapping: staker => cumulative number of queued withdrawals they have ever initiated.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Decreases a staker's delegated share balance in a strategy.\"},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates their stake to an operator.\"},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates a staker's stake to an operator with valid signatures from both parties.\"},\"delegatedTo(address)\":{\"notice\":\"Mapping: staker => operator whom the staker is currently delegated to.\"},\"delegationApprover(address)\":{\"notice\":\"Returns the delegationApprover account for an operator\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover.\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"eigenPodManager()\":{\"notice\":\"The EigenPodManager contract for EigenLayer\"},\"increaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Increases a staker's delegated share balance in a strategy.\"},\"isDelegated(address)\":{\"notice\":\"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise.\"},\"isOperator(address)\":{\"notice\":\"Returns true is an operator has previously registered for delegation.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"notice\":\"Updates an operator's stored `OperatorDetails`.\"},\"operatorDetails(address)\":{\"notice\":\"Returns the OperatorDetails struct associated with an `operator`.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator.\"},\"operatorShares(address,address)\":{\"notice\":\"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator.\"},\"pendingWithdrawals(bytes32)\":{\"notice\":\"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending\"},\"queueWithdrawals((address[],uint256[],address)[])\":{\"notice\":\"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay.\"},\"registerAsOperator((address,address,uint32),string)\":{\"notice\":\"Registers the caller as an operator in EigenLayer.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"slasher()\":{\"notice\":\"The Slasher contract for EigenLayer\"},\"stakerNonce(address)\":{\"notice\":\"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked.\"},\"stakerOptOutWindowBlocks(address)\":{\"notice\":\"Returns the stakerOptOutWindowBlocks for an operator\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract for EigenLayer\"},\"undelegate(address)\":{\"notice\":\"Undelegates the staker from the operator who they are delegated to. Puts the staker into the \\\"undelegation limbo\\\" mode of the EigenPodManager and queues a withdrawal of all of the staker's shares in the StrategyManager (to the staker), if necessary.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"},\"updateOperatorMetadataURI(string)\":{\"notice\":\"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.\"},\"withdrawalDelayBlocks()\":{\"notice\":\"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced).\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis storage contract is separate from the logic to simplify the upgrade process.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":\"DelegationManagerStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorDetailsModified","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"OperatorMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"operatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesDecreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerDelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerForceUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerUndelegated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"WithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"oldWithdrawalRoot","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newWithdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalMigrated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false},{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"indexed":false}],"type":"event","name":"WithdrawalQueued","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKER_DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"avsOperatorStatus","outputs":[{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateCurrentStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateDelegationApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"_stakerNonce","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"},{"internalType":"bool","name":"receiveAsTokens","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawal"},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal[]","name":"withdrawals","type":"tuple[]","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"middlewareTimesIndexes","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawals"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeWithdrawalsQueued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateTo"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"stakerSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateToBySignature"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegatedTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"delegationApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"delegationApproverSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"earningsReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","name":"withdrawalsToQueue","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawals"},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"modifyOperatorDetails"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorDetails","outputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pendingWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"queueWithdrawals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"registeringOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]},{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerAsOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"stakerNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stakerOptOutWindowBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"undelegate","outputs":[{"internalType":"bytes32[]","name":"withdrawalRoot","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorMetadataURI"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"params":{"expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"params":{"_delegationApprover":"the operator's `delegationApprover` who will be signing the delegationHash (in general)","approverSalt":"A unique and single use value associated with the approver signature.","expiry":"Time after which the approver's signature becomes invalid","operator":"The account receiving delegated stake","staker":"The account delegating their stake"}},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"params":{"_stakerNonce":"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`","expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"details":"middlewareTimesIndex should be calculated off chain before calling this function by finding the first index that satisfies `slasher.canWithdraw`beaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.","params":{"middlewareTimesIndex":"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array","receiveAsTokens":"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.","tokens":"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)","withdrawal":"The Withdrawal to complete."}},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"details":"See `completeQueuedWithdrawal` for relevant dev tags","params":{"middlewareTimesIndexes":"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.","receiveAsTokens":"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.","tokens":"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.","withdrawals":"The Withdrawals to complete."}},"decreaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to decrease.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to decrease the delegated shares."}},"delegateTo(address,(bytes,uint256),bytes32)":{"details":"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"A unique single use value tied to an individual signature.","approverSignatureAndExpiry":"Verifies the operator approves of this delegation","operator":"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer."}},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"details":"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.","approverSignatureAndExpiry":"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:","operator":"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.","staker":"The account delegating stake to an `operator` account","stakerSignatureAndExpiry":"Signed data from the staker authorizing delegating stake to an operator"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712."},"increaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to increase.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to increase the delegated shares."}},"modifyOperatorDetails((address,address,uint32))":{"details":"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).","params":{"newOperatorDetails":"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`."}},"registerAsOperator((address,address,uint32),string)":{"details":"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \"delegated to themself\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"is a URI for the operator's metadata, i.e. a link providing more details on the operator.","registeringOperatorDetails":"is the `OperatorDetails` for the operator."}},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"undelegate(address)":{"details":"Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified \"delegationApprover\"Reverts if the `staker` is already undelegated.","params":{"staker":"The account to be undelegated."},"returns":{"withdrawalRoot":"The root of the newly queued withdrawal, if a withdrawal was queued. Otherwise just bytes32(0)."}},"updateAVSMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an AVS"}},"updateOperatorMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATION_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the `DelegationApproval` struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `Registration` struct used by the contract"},"STAKER_DELEGATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `StakerDelegation` struct used by the contract"},"avsOperatorStatus(address,address)":{"notice":"Mapping: AVS => operator => enum of operator status to the AVS"},"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"notice":"Calculates the digestHash for a `staker` to sign to delegate to an `operator`"},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions."},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"notice":"Calculates the digest hash to be signed and used in the `delegateToBySignature` function"},"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":{"notice":"Returns the keccak256 hash of `withdrawal`."},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"notice":"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`"},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"notice":"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`"},"cumulativeWithdrawalsQueued(address)":{"notice":"Mapping: staker => cumulative number of queued withdrawals they have ever initiated."},"decreaseDelegatedShares(address,address,uint256)":{"notice":"Decreases a staker's delegated share balance in a strategy."},"delegateTo(address,(bytes,uint256),bytes32)":{"notice":"Caller delegates their stake to an operator."},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"notice":"Caller delegates a staker's stake to an operator with valid signatures from both parties."},"delegatedTo(address)":{"notice":"Mapping: staker => operator whom the staker is currently delegated to."},"delegationApprover(address)":{"notice":"Returns the delegationApprover account for an operator"},"delegationApproverSaltIsSpent(address,bytes32)":{"notice":"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover."},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"eigenPodManager()":{"notice":"The EigenPodManager contract for EigenLayer"},"increaseDelegatedShares(address,address,uint256)":{"notice":"Increases a staker's delegated share balance in a strategy."},"isDelegated(address)":{"notice":"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise."},"isOperator(address)":{"notice":"Returns true is an operator has previously registered for delegation."},"modifyOperatorDetails((address,address,uint32))":{"notice":"Updates an operator's stored `OperatorDetails`."},"operatorDetails(address)":{"notice":"Returns the OperatorDetails struct associated with an `operator`."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator."},"operatorShares(address,address)":{"notice":"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator."},"pendingWithdrawals(bytes32)":{"notice":"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending"},"queueWithdrawals((address[],uint256[],address)[])":{"notice":"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay."},"registerAsOperator((address,address,uint32),string)":{"notice":"Registers the caller as an operator in EigenLayer."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"slasher()":{"notice":"The Slasher contract for EigenLayer"},"stakerNonce(address)":{"notice":"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked."},"stakerOptOutWindowBlocks(address)":{"notice":"Returns the stakerOptOutWindowBlocks for an operator"},"strategyManager()":{"notice":"The StrategyManager contract for EigenLayer"},"undelegate(address)":{"notice":"Undelegates the staker from the operator who they are delegated to. Puts the staker into the \"undelegation limbo\" mode of the EigenPodManager and queues a withdrawal of all of the staker's shares in the StrategyManager (to the staker), if necessary."},"updateAVSMetadataURI(string)":{"notice":"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated."},"updateOperatorMetadataURI(string)":{"notice":"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated."},"withdrawalDelayBlocks()":{"notice":"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced)."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/DelegationManagerStorage.sol":"DelegationManagerStorage"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":97} \ No newline at end of file diff --git a/out/DummyToken.sol/DummyToken.json b/out/DummyToken.sol/DummyToken.json new file mode 100644 index 00000000..e54e0dbb --- /dev/null +++ b/out/DummyToken.sol/DummyToken.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"initialSupply","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162000b5d38038062000b5d833981016040819052620000349162000248565b6040518060400160405280600781526020016626bcaa37b5b2b760c91b815250604051806040016040528060038152602001624d544b60e81b815250816003908051906020019062000088929190620001a2565b5080516200009e906004906020840190620001a2565b505050620000b33382620000ba60201b60201c565b50620002c6565b6001600160a01b038216620001155760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000129919062000262565b90915550506001600160a01b038216600090815260208190526040812080548392906200015890849062000262565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001b09062000289565b90600052602060002090601f016020900481019282620001d457600085556200021f565b82601f10620001ef57805160ff19168380011785556200021f565b828001600101855582156200021f579182015b828111156200021f57825182559160200191906001019062000202565b506200022d92915062000231565b5090565b5b808211156200022d576000815560010162000232565b6000602082840312156200025b57600080fd5b5051919050565b600082198211156200028457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200029e57607f821691505b60208210811415620002c057634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002d66000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122018f411daef620b6fea6f68b7ca306d031a3bd8447048856884fef51124518e3964736f6c634300080c0033","sourceMap":"115:159:87:-:0;;;150:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1978:113:1;;;;;;;;;;;;;-1:-1:-1;;;1978:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1978:113:1;;;2052:5;2044;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2067:17:1;;;;:7;;:17;;;;;:::i;:::-;;1978:113;;233:32:87::1;239:10;251:13;233:5;;;:32;;:::i;:::-;150:122:::0;115:159;;8402:389:1;-1:-1:-1;;;;;8485:21:1;;8477:65;;;;-1:-1:-1;;;8477:65:1;;405:2:120;8477:65:1;;;387:21:120;444:2;424:18;;;417:30;483:33;463:18;;;456:61;534:18;;8477:65:1;;;;;;;;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8645:18:1;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:1;;939:25:120;;;-1:-1:-1;;;;;8688:37:1;;;8705:1;;8688:37;;927:2:120;912:18;8688:37:1;;;;;;;8402:389;;:::o;115:159:87:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;115:159:87;;;-1:-1:-1;115:159:87;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:184:120;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:120;;14:184;-1:-1:-1;14:184:120:o;563:225::-;603:3;634:1;630:6;627:1;624:13;621:136;;;679:10;674:3;670:20;667:1;660:31;714:4;711:1;704:15;742:4;739:1;732:15;621:136;-1:-1:-1;773:9:120;;563:225::o;975:380::-;1054:1;1050:12;;;;1097;;;1118:61;;1172:4;1164:6;1160:17;1150:27;;1118:61;1225:2;1217:6;1214:14;1194:18;1191:38;1188:161;;;1271:10;1266:3;1262:20;1259:1;1252:31;1306:4;1303:1;1296:15;1334:4;1331:1;1324:15;1188:161;;975:380;;;:::o;:::-;115:159:87;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122018f411daef620b6fea6f68b7ca306d031a3bd8447048856884fef51124518e3964736f6c634300080c0033","sourceMap":"115:159:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:120;;1211:22;1193:41;;1181:2;1166:18;4433:197:1;1053:187:120;3244:106:1;3331:12;;3244:106;;;1391:25:120;;;1379:2;1364:18;3244:106:1;1245:177:120;5192:286:1;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1902:36:120;;1890:2;1875:18;3093:91:1;1760:184:120;5873:234:1;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:1;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:4;4570:32:1;719:10:4;4586:7:1;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:1;;4433:197;-1:-1:-1;;;4433:197:1:o;5192:286::-;5319:4;719:10:4;5375:38:1;5391:4;719:10:4;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:1;;5192:286;-1:-1:-1;;;;5192:286:1:o;5873:234::-;5961:4;719:10:4;6015:64:1;719:10:4;6031:7:1;6068:10;6040:25;719:10:4;6031:7:1;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:4;6687:4:1;6768:25;719:10:4;6785:7:1;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:1;;3222:2:120;6803:85:1;;;3204:21:120;3261:2;3241:18;;;3234:30;3300:34;3280:18;;;3273:62;-1:-1:-1;;;3351:18:120;;;3344:35;3396:19;;6803:85:1;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:4;3862:28:1;719:10:4;3879:2:1;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:1;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:1;;10233:68;;;;-1:-1:-1;;;10233:68:1;;3628:2:120;10233:68:1;;;3610:21:120;3667:2;3647:18;;;3640:30;3706:34;3686:18;;;3679:62;-1:-1:-1;;;3757:18:120;;;3750:34;3801:19;;10233:68:1;3426:400:120;10233:68:1;-1:-1:-1;;;;;10319:21:1;;10311:68;;;;-1:-1:-1;;;10311:68:1;;4033:2:120;10311:68:1;;;4015:21:120;4072:2;4052:18;;;4045:30;4111:34;4091:18;;;4084:62;-1:-1:-1;;;4162:18:120;;;4155:32;4204:19;;10311:68:1;3831:398:120;10311:68:1;-1:-1:-1;;;;;10390:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1391:25:120;;;10441:32:1;;1364:18:120;10441:32:1;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:1;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:1;;4436:2:120;11010:68:1;;;4418:21:120;4475:2;4455:18;;;4448:30;4514:31;4494:18;;;4487:59;4563:18;;11010:68:1;4234:353:120;11010:68:1;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:1;;7593:68;;;;-1:-1:-1;;;7593:68:1;;4794:2:120;7593:68:1;;;4776:21:120;4833:2;4813:18;;;4806:30;4872:34;4852:18;;;4845:62;-1:-1:-1;;;4923:18:120;;;4916:35;4968:19;;7593:68:1;4592:401:120;7593:68:1;-1:-1:-1;;;;;7679:16:1;;7671:64;;;;-1:-1:-1;;;7671:64:1;;5200:2:120;7671:64:1;;;5182:21:120;5239:2;5219:18;;;5212:30;5278:34;5258:18;;;5251:62;-1:-1:-1;;;5329:18:120;;;5322:33;5372:19;;7671:64:1;4998:399:120;7671:64:1;-1:-1:-1;;;;;7817:15:1;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:1;;5604:2:120;7842:72:1;;;5586:21:120;5643:2;5623:18;;;5616:30;5682:34;5662:18;;;5655:62;-1:-1:-1;;;5733:18:120;;;5726:36;5779:19;;7842:72:1;5402:402:120;7842:72:1;-1:-1:-1;;;;;7948:15:1;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:1;8054:4;-1:-1:-1;;;;;8045:26:1;;8064:6;8045:26;;;;1391:25:120;;1379:2;1364:18;;1245:177;8045:26:1;;;;;;;;8082:37;11786:121;14:597:120;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:120;574:15;-1:-1:-1;;570:29:120;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:120:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:120;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:120:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:186::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2100:29;2119:9;2100:29;:::i;:::-;2090:39;1949:186;-1:-1:-1;;;1949:186:120:o;2140:260::-;2208:6;2216;2269:2;2257:9;2248:7;2244:23;2240:32;2237:52;;;2285:1;2282;2275:12;2237:52;2308:29;2327:9;2308:29;:::i;:::-;2298:39;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2140:260;;;;;:::o;2405:380::-;2484:1;2480:12;;;;2527;;;2548:61;;2602:4;2594:6;2590:17;2580:27;;2548:61;2655:2;2647:6;2644:14;2624:18;2621:38;2618:161;;;2701:10;2696:3;2692:20;2689:1;2682:31;2736:4;2733:1;2726:15;2764:4;2761:1;2754:15;2618:161;;2405:380;;;:::o;2790:225::-;2830:3;2861:1;2857:6;2854:1;2851:13;2848:136;;;2906:10;2901:3;2897:20;2894:1;2887:31;2941:4;2938:1;2931:15;2969:4;2966:1;2959:15;2848:136;-1:-1:-1;3000:9:120;;2790:225::o","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/DummyToken.sol\":\"DummyToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"test/helpers/DummyToken.sol\":{\"keccak256\":\"0xe3abac17e234bd69fd3de3d0d17a37e241f960e2fbe3f7aa04f9bf20731f0214\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://813357c48a7a344fcbd87760f3699d54b0a65b1fead858686057928056b3ba69\",\"dweb:/ipfs/QmbujERmmhaLvQxqvHJ8GjzTQGq7f7cdPrJTkDHgww3yZE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/DummyToken.sol":"DummyToken"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"test/helpers/DummyToken.sol":{"keccak256":"0xe3abac17e234bd69fd3de3d0d17a37e241f960e2fbe3f7aa04f9bf20731f0214","urls":["bzz-raw://813357c48a7a344fcbd87760f3699d54b0a65b1fead858686057928056b3ba69","dweb:/ipfs/QmbujERmmhaLvQxqvHJ8GjzTQGq7f7cdPrJTkDHgww3yZE"],"license":"MIT"}},"version":1},"id":87} \ No newline at end of file diff --git a/out/ECDSA.sol/ECDSA.json b/out/ECDSA.sol/ECDSA.json new file mode 100644 index 00000000..0731ed27 --- /dev/null +++ b/out/ECDSA.sol/ECDSA.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbd610ba28fb99538e7dc2f443a1151c1b89fb96d4e774b2edd477aca232340e64736f6c634300080c0033","sourceMap":"369:9018:55:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;369:9018:55;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbd610ba28fb99538e7dc2f443a1151c1b89fb96d4e774b2edd477aca232340e64736f6c634300080c0033","sourceMap":"369:9018:55:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":"ECDSA"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"}},"version":1},"id":55} \ No newline at end of file diff --git a/out/EIP1271SignatureUtils.sol/EIP1271SignatureUtils.json b/out/EIP1271SignatureUtils.sol/EIP1271SignatureUtils.json new file mode 100644 index 00000000..993ea2ef --- /dev/null +++ b/out/EIP1271SignatureUtils.sol/EIP1271SignatureUtils.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x607c610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea2646970667358221220eb2bc5d3149f9e1d80ab73246c425b5946755d5fe058050053322e1af4a9d30664736f6c634300080c0033","sourceMap":"400:1946:98:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;400:1946:98;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea2646970667358221220eb2bc5d3149f9e1d80ab73246c425b5946755d5fe058050053322e1af4a9d30664736f6c634300080c0033","sourceMap":"400:1946:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;2319:25;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"test()":"f8a8fd6d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library of utilities for making EIP1271-compliant signature checks.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":\"EIP1271SignatureUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":"EIP1271SignatureUtils"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"}},"version":1},"id":98} \ No newline at end of file diff --git a/out/ERC1967Proxy.sol/ERC1967Proxy.json b/out/ERC1967Proxy.sol/ERC1967Proxy.json new file mode 100644 index 00000000..ae53c5f7 --- /dev/null +++ b/out/ERC1967Proxy.sol/ERC1967Proxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201495b7696c3ac90de0b8bd903438fbabf4220b6c7d3ac49592e43933954c805c64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","sourceMap":"567:723:44:-:0;;;958:112;;;;;;;;;;;;;;;;;;:::i;:::-;1024:39;1042:6;1050:5;1057;1024:17;:39::i;:::-;958:112;;567:723;;2183:295:45;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;;;;;:53;;:::i;:::-;;2360:112;2183:295;;;:::o;1897:152::-;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:45;;;;;;;;1897:152;:::o;6570:198:51:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:51:o;1532:259:45:-;1613:37;1632:17;1613:18;;;;;:37;;:::i;:::-;1605:95;;;;-1:-1:-1;;;1605:95:45;;1666:2:120;1605:95:45;;;1648:21:120;1705:2;1685:18;;;1678:30;1744:34;1724:18;;;1717:62;-1:-1:-1;;;1795:18:120;;;1788:43;1848:19;;1605:95:45;;;;;;;;;1767:17;1710:48;1030:66;1737:20;;1710:26;;;;;:48;;:::i;:::-;:74;;-1:-1:-1;;;;;;1710:74:45;-1:-1:-1;;;;;1710:74:45;;;;;;;;;;-1:-1:-1;1532:259:45:o;6954:387:51:-;7095:12;-1:-1:-1;;;;;1465:19:51;;;7119:69;;;;-1:-1:-1;;;7119:69:51;;2080:2:120;7119:69:51;;;2062:21:120;2119:2;2099:18;;;2092:30;2158:34;2138:18;;;2131:62;-1:-1:-1;;;2209:18:120;;;2202:36;2255:19;;7119:69:51;1878:402:120;7119:69:51;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:51;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:51;;-1:-1:-1;7199:67:51;-1:-1:-1;7283:51:51;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:51:o;1175:320::-;-1:-1:-1;;;;;1465:19:51;;:23;;;1175:320::o;1614:190:53:-;1784:4;1614:190::o;7561:742:51:-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:51;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:51;;;;;;;;:::i;14:127:120:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:258;218:1;228:113;242:6;239:1;236:13;228:113;;;318:11;;;312:18;299:11;;;292:39;264:2;257:10;228:113;;;359:6;356:1;353:13;350:48;;;-1:-1:-1;;394:1:120;376:16;;369:27;146:258::o;409:1050::-;497:6;505;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;600:16;;-1:-1:-1;;;;;645:31:120;;635:42;;625:70;;691:1;688;681:12;625:70;763:2;748:18;;742:25;714:5;;-1:-1:-1;;;;;;816:14:120;;;813:34;;;843:1;840;833:12;813:34;881:6;870:9;866:22;856:32;;926:7;919:4;915:2;911:13;907:27;897:55;;948:1;945;938:12;897:55;977:2;971:9;999:2;995;992:10;989:36;;;1005:18;;:::i;:::-;1080:2;1074:9;1048:2;1134:13;;-1:-1:-1;;1130:22:120;;;1154:2;1126:31;1122:40;1110:53;;;1178:18;;;1198:22;;;1175:46;1172:72;;;1224:18;;:::i;:::-;1264:10;1260:2;1253:22;1299:2;1291:6;1284:18;1339:7;1334:2;1329;1325;1321:11;1317:20;1314:33;1311:53;;;1360:1;1357;1350:12;1311:53;1373:55;1425:2;1420;1412:6;1408:15;1403:2;1399;1395:11;1373:55;:::i;:::-;1447:6;1437:16;;;;;;;409:1050;;;;;:::o;2285:274::-;2414:3;2452:6;2446:13;2468:53;2514:6;2509:3;2502:4;2494:6;2490:17;2468:53;:::i;:::-;2537:16;;;;;2285:274;-1:-1:-1;;2285:274:120:o;2564:383::-;2713:2;2702:9;2695:21;2676:4;2745:6;2739:13;2788:6;2783:2;2772:9;2768:18;2761:34;2804:66;2863:6;2858:2;2847:9;2843:18;2838:2;2830:6;2826:15;2804:66;:::i;:::-;2931:2;2910:15;-1:-1:-1;;2906:29:120;2891:45;;;;2938:2;2887:54;;2564:383;-1:-1:-1;;2564:383:120:o;:::-;567:723:44;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201495b7696c3ac90de0b8bd903438fbabf4220b6c7d3ac49592e43933954c805c64736f6c634300080c0033","sourceMap":"567:723:44:-:0;;;;;;2898:11:46;:9;:11::i;:::-;567:723:44;;2675:11:46;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:51:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:51:o;1175:320::-;-1:-1:-1;;;;;1465:19:51;;:23;;;1175:320::o;1614:190:53:-;1784:4;1614:190::o;1148:140:44:-;1215:12;1246:35;1030:66:45;1380:54;-1:-1:-1;;;;;1380:54:45;;1301:140;1246:35:44;1239:42;;1148:140;:::o;948:895:46:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:51;7095:12;-1:-1:-1;;;;;1465:19:51;;;7119:69;;;;-1:-1:-1;;;7119:69:51;;216:2:120;7119:69:51;;;198:21:120;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:120;;;338:36;391:19;;7119:69:51;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:51;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:51:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:51;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:51;;;;;;;;:::i;421:258:120:-;493:1;503:113;517:6;514:1;511:13;503:113;;;593:11;;;587:18;574:11;;;567:39;539:2;532:10;503:113;;;634:6;631:1;628:13;625:48;;;669:1;660:6;655:3;651:16;644:27;625:48;;421:258;;;:::o;684:274::-;813:3;851:6;845:13;867:53;913:6;908:3;901:4;893:6;889:17;867:53;:::i;:::-;936:16;;;;;684:274;-1:-1:-1;;684:274:120:o;963:383::-;1112:2;1101:9;1094:21;1075:4;1144:6;1138:13;1187:6;1182:2;1171:9;1167:18;1160:34;1203:66;1262:6;1257:2;1246:9;1242:18;1237:2;1229:6;1225:15;1203:66;:::i;:::-;1330:2;1309:15;-1:-1:-1;;1305:29:120;1290:45;;;;1337:2;1286:54;;963:383;-1:-1:-1;;963:383:120:o","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":"ERC1967Proxy"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"}},"version":1},"id":44} \ No newline at end of file diff --git a/out/ERC1967Upgrade.sol/ERC1967Upgrade.json b/out/ERC1967Upgrade.sol/ERC1967Upgrade.json new file mode 100644 index 00000000..64565633 --- /dev/null +++ b/out/ERC1967Upgrade.sol/ERC1967Upgrade.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"delegatecall\",\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":"ERC1967Upgrade"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file diff --git a/out/ERC20.sol/ERC20.json b/out/ERC20.sol/ERC20.json new file mode 100644 index 00000000..b8f0ed01 --- /dev/null +++ b/out/ERC20.sol/ERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220602bfd1ac02e9252a4dd048658dd6544c7586fec135709a341f73c01c71745cd64736f6c634300080c0033","sourceMap":"1403:11214:1:-:0;;;1978:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2067:17:1;;;;:7;;:17;;;;;:::i;:::-;;1978:113;;1403:11214;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1403:11214:1;;;-1:-1:-1;1403:11214:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:120;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:120;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:120;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:120:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:120;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;1403:11214:1;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220602bfd1ac02e9252a4dd048658dd6544c7586fec135709a341f73c01c71745cd64736f6c634300080c0033","sourceMap":"1403:11214:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:120;;1211:22;1193:41;;1181:2;1166:18;4433:197:1;1053:187:120;3244:106:1;3331:12;;3244:106;;;1391:25:120;;;1379:2;1364:18;3244:106:1;1245:177:120;5192:286:1;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1902:36:120;;1890:2;1875:18;3093:91:1;1760:184:120;5873:234:1;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:1;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:4;4570:32:1;719:10:4;4586:7:1;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:1;;4433:197;-1:-1:-1;;;4433:197:1:o;5192:286::-;5319:4;719:10:4;5375:38:1;5391:4;719:10:4;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:1;;5192:286;-1:-1:-1;;;;5192:286:1:o;5873:234::-;5961:4;719:10:4;6015:64:1;719:10:4;6031:7:1;6068:10;6040:25;719:10:4;6031:7:1;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;2367:102::-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:4;6687:4:1;6768:25;719:10:4;6785:7:1;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:1;;3222:2:120;6803:85:1;;;3204:21:120;3261:2;3241:18;;;3234:30;3300:34;3280:18;;;3273:62;-1:-1:-1;;;3351:18:120;;;3344:35;3396:19;;6803:85:1;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:4;3862:28:1;719:10:4;3879:2:1;3883:6;3862:9;:28::i;3976:149::-;-1:-1:-1;;;;;4091:18:1;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10110:370::-;-1:-1:-1;;;;;10241:19:1;;10233:68;;;;-1:-1:-1;;;10233:68:1;;3628:2:120;10233:68:1;;;3610:21:120;3667:2;3647:18;;;3640:30;3706:34;3686:18;;;3679:62;-1:-1:-1;;;3757:18:120;;;3750:34;3801:19;;10233:68:1;3426:400:120;10233:68:1;-1:-1:-1;;;;;10319:21:1;;10311:68;;;;-1:-1:-1;;;10311:68:1;;4033:2:120;10311:68:1;;;4015:21:120;4072:2;4052:18;;;4045:30;4111:34;4091:18;;;4084:62;-1:-1:-1;;;4162:18:120;;;4155:32;4204:19;;10311:68:1;3831:398:120;10311:68:1;-1:-1:-1;;;;;10390:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;1391:25:120;;;10441:32:1;;1364:18:120;10441:32:1;;;;;;;10110:370;;;:::o;10761:441::-;10891:24;10918:25;10928:5;10935:7;10918:9;:25::i;:::-;10891:52;;-1:-1:-1;;10957:16:1;:37;10953:243;;11038:6;11018:16;:26;;11010:68;;;;-1:-1:-1;;;11010:68:1;;4436:2:120;11010:68:1;;;4418:21:120;4475:2;4455:18;;;4448:30;4514:31;4494:18;;;4487:59;4563:18;;11010:68:1;4234:353:120;11010:68:1;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;-1:-1:-1;;;;;7601:18:1;;7593:68;;;;-1:-1:-1;;;7593:68:1;;4794:2:120;7593:68:1;;;4776:21:120;4833:2;4813:18;;;4806:30;4872:34;4852:18;;;4845:62;-1:-1:-1;;;4923:18:120;;;4916:35;4968:19;;7593:68:1;4592:401:120;7593:68:1;-1:-1:-1;;;;;7679:16:1;;7671:64;;;;-1:-1:-1;;;7671:64:1;;5200:2:120;7671:64:1;;;5182:21:120;5239:2;5219:18;;;5212:30;5278:34;5258:18;;;5251:62;-1:-1:-1;;;5329:18:120;;;5322:33;5372:19;;7671:64:1;4998:399:120;7671:64:1;-1:-1:-1;;;;;7817:15:1;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;-1:-1:-1;;;7842:72:1;;5604:2:120;7842:72:1;;;5586:21:120;5643:2;5623:18;;;5616:30;5682:34;5662:18;;;5655:62;-1:-1:-1;;;5733:18:120;;;5726:36;5779:19;;7842:72:1;5402:402:120;7842:72:1;-1:-1:-1;;;;;7948:15:1;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;-1:-1:-1;;;;;8045:26:1;8054:4;-1:-1:-1;;;;;8045:26:1;;8064:6;8045:26;;;;1391:25:120;;1379:2;1364:18;;1245:177;8045:26:1;;;;;;;;8082:37;11786:121;14:597:120;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:120;574:15;-1:-1:-1;;570:29:120;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:120:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:120;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:120:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:186::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2100:29;2119:9;2100:29;:::i;:::-;2090:39;1949:186;-1:-1:-1;;;1949:186:120:o;2140:260::-;2208:6;2216;2269:2;2257:9;2248:7;2244:23;2240:32;2237:52;;;2285:1;2282;2275:12;2237:52;2308:29;2327:9;2308:29;:::i;:::-;2298:39;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2140:260;;;;;:::o;2405:380::-;2484:1;2480:12;;;;2527;;;2548:61;;2602:4;2594:6;2590:17;2580:27;;2548:61;2655:2;2647:6;2644:14;2624:18;2621:38;2618:161;;;2701:10;2696:3;2692:20;2689:1;2682:31;2736:4;2733:1;2726:15;2764:4;2761:1;2754:15;2618:161;;2405:380;;;:::o;2790:225::-;2830:3;2861:1;2857:6;2854:1;2851:13;2848:136;;;2906:10;2901:3;2897:20;2894:1;2887:31;2941:4;2938:1;2931:15;2969:4;2966:1;2959:15;2848:136;-1:-1:-1;3000:9:120;;2790:225::o","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file diff --git a/out/ERC20/IERC20.sol/IERC20.json b/out/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 00000000..0717c727 --- /dev/null +++ b/out/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"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\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"}},"version":1},"id":2} \ No newline at end of file diff --git a/out/Endian.sol/Endian.json b/out/Endian.sol/Endian.json new file mode 100644 index 00000000..245eeff9 --- /dev/null +++ b/out/Endian.sol/Endian.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x607c610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea2646970667358221220ca49664ee2d3b3eb8b79ad1a7f1b90ce86b8a363a1fa2d7e0b71db70c91992c864736f6c634300080c0033","sourceMap":"63:1070:99:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;63:1070:99;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea2646970667358221220ca49664ee2d3b3eb8b79ad1a7f1b90ce86b8a363a1fa2d7e0b71db70c91992c864736f6c634300080c0033","sourceMap":"63:1070:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;1106:25;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"test()":"f8a8fd6d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/Endian.sol\":\"Endian\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/Endian.sol":"Endian"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"}},"version":1},"id":99} \ No newline at end of file diff --git a/out/FixedPointMathLib.sol/FixedPointMathLib.json b/out/FixedPointMathLib.sol/FixedPointMathLib.json new file mode 100644 index 00000000..4c86526e --- /dev/null +++ b/out/FixedPointMathLib.sol/FixedPointMathLib.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204374699084b442103469414c518f83594236f4a98b0716753b4a2f067f0485fb64736f6c634300080c0033","sourceMap":"341:9712:56:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;341:9712:56;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204374699084b442103469414c518f83594236f4a98b0716753b4a2f067f0485fb64736f6c634300080c0033","sourceMap":"341:9712:56:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol)Inspired by USM (https://github.com/usmfum/USM/blob/master/contracts/WadMath.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Arithmetic library with operations for fixed-point numbers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/solmate/src/utils/FixedPointMathLib.sol\":\"FixedPointMathLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/solmate/src/utils/FixedPointMathLib.sol":"FixedPointMathLib"},"evmVersion":"london","libraries":{}},"sources":{"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"}},"version":1},"id":56} \ No newline at end of file diff --git a/out/FullMath.sol/FullMath.json b/out/FullMath.sol/FullMath.json new file mode 100644 index 00000000..8e36afe7 --- /dev/null +++ b/out/FullMath.sol/FullMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076d63c07afb1c9ce60eccd0fc138bc48ffdfe1e304ba3d3d002178527876de0f64736f6c634300080c0033","sourceMap":"354:5163:66:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;354:5163:66;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076d63c07afb1c9ce60eccd0fc138bc48ffdfe1e304ba3d3d002178527876de0f64736f6c634300080c0033","sourceMap":"354:5163:66:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Handles \\\"phantom overflow\\\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Contains 512-bit math functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/libraries/FullMath.sol":"FullMath"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/libraries/FullMath.sol":{"keccak256":"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645","urls":["bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125","dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd"],"license":"MIT"}},"version":1},"id":66} \ No newline at end of file diff --git a/out/IAVSDirectory.sol/IAVSDirectory.json b/out/IAVSDirectory.sol/IAVSDirectory.json new file mode 100644 index 00000000..e80c1d7b --- /dev/null +++ b/out/IAVSDirectory.sol/IAVSDirectory.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","deregisterOperatorFromAVS(address)":"a364f4da","operatorSaltIsSpent(address,bytes32)":"374823b5","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IAVSDirectory.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"details\":\"Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing\"}},\"kind\":\"dev\",\"methods\":{\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"operatorSaltIsSpent(address,bytes32)\":{\"details\":\"Salts is used in the `registerOperatorToAVS` function.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an AVS\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"}},\"kind\":\"user\",\"methods\":{\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the Registration struct used by the contract\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Returns whether or not the salt has already been used by the operator.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":\"IAVSDirectory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"operatorSaltIsSpent(address,bytes32)":{"details":"Salts is used in the `registerOperatorToAVS` function."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"updateAVSMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the Registration struct used by the contract"},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Returns whether or not the salt has already been used by the operator."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"updateAVSMetadataURI(string)":{"notice":"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":"IAVSDirectory"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"}},"version":1},"id":5} \ No newline at end of file diff --git a/out/IBeacon.sol/IBeacon.json b/out/IBeacon.sol/IBeacon.json new file mode 100644 index 00000000..be068f95 --- /dev/null +++ b/out/IBeacon.sol/IBeacon.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"implementation()":"5c60da1b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":"IBeacon"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"}},"version":1},"id":47} \ No newline at end of file diff --git a/out/IBeaconChainOracle.sol/IBeaconChainOracle.json b/out/IBeaconChainOracle.sol/IBeaconChainOracle.json new file mode 100644 index 00000000..01d670f2 --- /dev/null +++ b/out/IBeaconChainOracle.sol/IBeaconChainOracle.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"timestampToBlockRoot","inputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"timestampToBlockRoot(uint256)":"643599f2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"timestampToBlockRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for the BeaconStateOracle contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"timestampToBlockRoot(uint256)\":{\"notice\":\"The block number to state root mapping.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":\"IBeaconChainOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"timestampToBlockRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"timestampToBlockRoot(uint256)":{"notice":"The block number to state root mapping."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":"IBeaconChainOracle"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"}},"version":1},"id":102} \ No newline at end of file diff --git a/out/IDelegationManager.sol/IDelegationManager.json b/out/IDelegationManager.sol/IDelegationManager.json new file mode 100644 index 00000000..b16041b7 --- /dev/null +++ b/out/IDelegationManager.sol/IDelegationManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAKER_DELEGATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateCurrentStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateDelegationApprovalDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"_stakerNonce","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"completeQueuedWithdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"},{"name":"receiveAsTokens","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeQueuedWithdrawals","inputs":[{"name":"withdrawals","type":"tuple[]","internalType":"struct IDelegationManager.Withdrawal[]","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[][]","internalType":"contract IERC20[][]"},{"name":"middlewareTimesIndexes","type":"uint256[]","internalType":"uint256[]"},{"name":"receiveAsTokens","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeWithdrawalsQueued","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decreaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateTo","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateToBySignature","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"stakerSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegatedTo","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApprover","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApproverSaltIsSpent","inputs":[{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"earningsReceiver","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"increaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegated","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawals","inputs":[{"name":"withdrawalsToQueue","type":"tuple[]","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyOperatorDetails","inputs":[{"name":"newOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorDetails","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"queueWithdrawals","inputs":[{"name":"queuedWithdrawalParams","type":"tuple[]","internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"withdrawer","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerAsOperator","inputs":[{"name":"registeringOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]},{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakerNonce","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerOptOutWindowBlocks","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"undelegate","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawalRoot","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalDelayBlocks","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"anonymous":false},{"type":"event","name":"OperatorDetailsModified","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newOperatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorMetadataURIUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorSharesDecreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSharesIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakerDelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerForceUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawalCompleted","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalDelayBlocksSet","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalMigrated","inputs":[{"name":"oldWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalQueued","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"withdrawal","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DELEGATION_APPROVAL_TYPEHASH()":"04a4f979","DOMAIN_TYPEHASH()":"20606b70","OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","STAKER_DELEGATION_TYPEHASH()":"43377382","calculateCurrentStakerDelegationDigestHash(address,address,uint256)":"1bbce091","calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":"0b9f487a","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","calculateStakerDelegationDigestHash(address,uint256,address,uint256)":"c94b5111","calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":"597b36da","completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":"60d7faed","completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":"33404396","cumulativeWithdrawalsQueued(address)":"a1788484","decreaseDelegatedShares(address,address,uint256)":"132d4967","delegateTo(address,(bytes,uint256),bytes32)":"eea9064b","delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":"7f548071","delegatedTo(address)":"65da1264","delegationApprover(address)":"3cdeb5e0","delegationApproverSaltIsSpent(address,bytes32)":"bb45fef2","deregisterOperatorFromAVS(address)":"a364f4da","domainSeparator()":"f698da25","earningsReceiver(address)":"5f966f14","increaseDelegatedShares(address,address,uint256)":"28a573ae","isDelegated(address)":"3e28391d","isOperator(address)":"6d70f7ae","migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":"5cfe8d2c","modifyOperatorDetails((address,address,uint32))":"f16172b0","operatorDetails(address)":"c5e480db","operatorSaltIsSpent(address,bytes32)":"374823b5","operatorShares(address,address)":"778e55f3","queueWithdrawals((address[],uint256[],address)[])":"0dd8dd02","registerAsOperator((address,address,uint32),string)":"0f589e59","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","stakerNonce(address)":"29c77d4f","stakerOptOutWindowBlocks(address)":"16928365","undelegate(address)":"da8be864","updateAVSMetadataURI(string)":"a98fb355","updateOperatorMetadataURI(string)":"99be81c8","withdrawalDelayBlocks()":"50f73e7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorDetailsModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"OperatorMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"operatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerForceUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"WithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"WithdrawalQueued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateDelegationApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakerNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAsTokens\",\"type\":\"bool\"}],\"name\":\"completeQueuedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal[]\",\"name\":\"withdrawals\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[][]\",\"name\":\"tokens\",\"type\":\"address[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"receiveAsTokens\",\"type\":\"bool[]\"}],\"name\":\"completeQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"cumulativeWithdrawalsQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"decreaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateToBySignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"delegatedTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"delegationApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"delegationApproverSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"earningsReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"increaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"name\":\"withdrawalsToQueue\",\"type\":\"tuple[]\"}],\"name\":\"migrateQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"modifyOperatorDetails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"operatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct IDelegationManager.QueuedWithdrawalParams[]\",\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\"}],\"name\":\"queueWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"registerAsOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stakerOptOutWindowBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateOperatorMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"details\":\"Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing\"},\"OperatorMetadataURIUpdated(address,string)\":{\"details\":\"Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"params\":{\"withdrawal\":\"Is the withdrawal itself.\",\"withdrawalRoot\":\"Is the hash of the `withdrawal`.\"}}},\"kind\":\"dev\",\"methods\":{\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"params\":{\"_delegationApprover\":\"the operator's `delegationApprover` who will be signing the delegationHash (in general)\",\"approverSalt\":\"A unique and single use value associated with the approver signature.\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account receiving delegated stake\",\"staker\":\"The account delegating their stake\"}},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"params\":{\"_stakerNonce\":\"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`\",\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"details\":\"middlewareTimesIndex should be calculated off chain before calling this function by finding the first index that satisfies `slasher.canWithdraw`beaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.\",\"params\":{\"middlewareTimesIndex\":\"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array\",\"receiveAsTokens\":\"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.\",\"tokens\":\"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)\",\"withdrawal\":\"The Withdrawal to complete.\"}},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"details\":\"See `completeQueuedWithdrawal` for relevant dev tags\",\"params\":{\"middlewareTimesIndexes\":\"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.\",\"receiveAsTokens\":\"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.\",\"tokens\":\"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.\",\"withdrawals\":\"The Withdrawals to complete.\"}},\"cumulativeWithdrawalsQueued(address)\":{\"details\":\"This only increments (doesn't decrement), and is used to help ensure that otherwise identical withdrawals have unique hashes.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to decrease.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to decrease the delegated shares.\"}},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"details\":\"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"A unique single use value tied to an individual signature.\",\"approverSignatureAndExpiry\":\"Verifies the operator approves of this delegation\",\"operator\":\"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.\"}},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"details\":\"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.\",\"approverSignatureAndExpiry\":\"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:\",\"operator\":\"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.\",\"staker\":\"The account delegating stake to an `operator` account\",\"stakerSignatureAndExpiry\":\"Signed data from the staker authorizing delegating stake to an operator\"}},\"delegatedTo(address)\":{\"details\":\"Note that returning address(0) indicates that the staker is not actively delegated to any operator.\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"details\":\"Salts are used in the `delegateTo` and `delegateToBySignature` functions. Note that these functions only process the delegationApprover's signature + the provided salt if the operator being delegated to has specified a nonzero address as their `delegationApprover`.\"},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to increase.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to increase the delegated shares.\"}},\"modifyOperatorDetails((address,address,uint32))\":{\"details\":\"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).\",\"params\":{\"newOperatorDetails\":\"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`.\"}},\"operatorSaltIsSpent(address,bytes32)\":{\"details\":\"Salts is used in the `registerOperatorToAVS` function.\"},\"operatorShares(address,address)\":{\"details\":\"By design, the following invariant should hold for each Strategy: (operator's shares in delegation manager) = sum (shares above zero of all stakers delegated to operator) = sum (delegateable shares of all stakers delegated to the operator)\"},\"registerAsOperator((address,address,uint32),string)\":{\"details\":\"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \\\"delegated to themself\\\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"is a URI for the operator's metadata, i.e. a link providing more details on the operator.\",\"registeringOperatorDetails\":\"is the `OperatorDetails` for the operator.\"}},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"undelegate(address)\":{\"details\":\"Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified \\\"delegationApprover\\\"Reverts if the `staker` is already undelegated.\",\"params\":{\"staker\":\"The account to be undelegated.\"},\"returns\":{\"withdrawalRoot\":\"The root of the newly queued withdrawal, if a withdrawal was queued. Otherwise just bytes32(0).\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an AVS\"}},\"updateOperatorMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an operator\"}},\"withdrawalDelayBlocks()\":{\"details\":\"Note that the withdrawal delay is not enforced on withdrawals of 'beaconChainETH', as the EigenPods have their own separate delay mechanic and we want to avoid stacking multiple enforced delays onto a single withdrawal.\"}},\"title\":\"DelegationManager\",\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"},\"OperatorDetailsModified(address,(address,address,uint32))\":{\"notice\":\"Emitted when an operator updates their OperatorDetails to @param newOperatorDetails\"},\"OperatorMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param operator indicates that they are updating their MetadataURI string\"},\"OperatorSharesDecreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are decreased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"OperatorSharesIncreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are increased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"StakerDelegated(address,address)\":{\"notice\":\"Emitted when @param staker delegates to @param operator.\"},\"StakerForceUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker is undelegated via a call not originating from the staker themself\"},\"StakerUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker undelegates from @param operator.\"},\"WithdrawalCompleted(bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is completed\"},\"WithdrawalDelayBlocksSet(uint256,uint256)\":{\"notice\":\"Emitted when the `withdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"WithdrawalMigrated(bytes32,bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is *migrated* from the StrategyManager to the DelegationManager\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Emitted when a new withdrawal is queued.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the DelegationApproval struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the Registration struct used by the contract\"},\"STAKER_DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the StakerDelegation struct used by the contract\"},\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"notice\":\"Calculates the digestHash for a `staker` to sign to delegate to an `operator`\"},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions.\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"notice\":\"Calculates the digest hash to be signed and used in the `delegateToBySignature` function\"},\"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Returns the keccak256 hash of `withdrawal`.\"},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"notice\":\"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`\"},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"notice\":\"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`\"},\"cumulativeWithdrawalsQueued(address)\":{\"notice\":\"Mapping: staker => cumulative number of queued withdrawals they have ever initiated.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Decreases a staker's delegated share balance in a strategy.\"},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates their stake to an operator.\"},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates a staker's stake to an operator with valid signatures from both parties.\"},\"delegatedTo(address)\":{\"notice\":\"returns the address of the operator that `staker` is delegated to.Mapping: staker => operator whom the staker is currently delegated to.\"},\"delegationApprover(address)\":{\"notice\":\"Returns the delegationApprover account for an operator\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover.\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Increases a staker's delegated share balance in a strategy.\"},\"isDelegated(address)\":{\"notice\":\"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise.\"},\"isOperator(address)\":{\"notice\":\"Returns true is an operator has previously registered for delegation.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"notice\":\"Updates an operator's stored `OperatorDetails`.\"},\"operatorDetails(address)\":{\"notice\":\"Returns the OperatorDetails struct associated with an `operator`.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Returns whether or not the salt has already been used by the operator.\"},\"operatorShares(address,address)\":{\"notice\":\"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator.\"},\"queueWithdrawals((address[],uint256[],address)[])\":{\"notice\":\"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay.\"},\"registerAsOperator((address,address,uint32),string)\":{\"notice\":\"Registers the caller as an operator in EigenLayer.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"stakerNonce(address)\":{\"notice\":\"Mapping: staker => number of signed delegation nonces (used in `delegateToBySignature`) from the staker that the contract has already checked\"},\"stakerOptOutWindowBlocks(address)\":{\"notice\":\"Returns the stakerOptOutWindowBlocks for an operator\"},\"undelegate(address)\":{\"notice\":\"Undelegates the staker from the operator who they are delegated to. Puts the staker into the \\\"undelegation limbo\\\" mode of the EigenPodManager and queues a withdrawal of all of the staker's shares in the StrategyManager (to the staker), if necessary.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"},\"updateOperatorMetadataURI(string)\":{\"notice\":\"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.\"},\"withdrawalDelayBlocks()\":{\"notice\":\"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced).\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis is the contract for delegation in EigenLayer. The main functionalities of this contract are - enabling anyone to register as an operator in EigenLayer - allowing operators to specify parameters related to stakers who delegate to them - enabling any staker to delegate its stake to the operator of its choice (a given staker can only delegate to a single operator at a time) - enabling a staker to undelegate its assets from the operator it is delegated to (performed as part of the withdrawal process, initiated through the StrategyManager)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":\"IDelegationManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorDetailsModified","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"OperatorMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"operatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesDecreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerDelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerForceUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerUndelegated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"WithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"oldWithdrawalRoot","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newWithdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalMigrated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false},{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"indexed":false}],"type":"event","name":"WithdrawalQueued","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKER_DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateCurrentStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateDelegationApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"_stakerNonce","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"},{"internalType":"bool","name":"receiveAsTokens","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawal"},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal[]","name":"withdrawals","type":"tuple[]","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"middlewareTimesIndexes","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawals"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeWithdrawalsQueued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateTo"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"stakerSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateToBySignature"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"delegatedTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"delegationApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"delegationApproverSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"earningsReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","name":"withdrawalsToQueue","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawals"},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"modifyOperatorDetails"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorDetails","outputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"}],"stateMutability":"view","type":"function","name":"operatorShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"queueWithdrawals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"registeringOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]},{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerAsOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"stakerNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stakerOptOutWindowBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"undelegate","outputs":[{"internalType":"bytes32[]","name":"withdrawalRoot","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorMetadataURI"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"params":{"expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"params":{"_delegationApprover":"the operator's `delegationApprover` who will be signing the delegationHash (in general)","approverSalt":"A unique and single use value associated with the approver signature.","expiry":"Time after which the approver's signature becomes invalid","operator":"The account receiving delegated stake","staker":"The account delegating their stake"}},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"params":{"_stakerNonce":"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`","expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"details":"middlewareTimesIndex should be calculated off chain before calling this function by finding the first index that satisfies `slasher.canWithdraw`beaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.","params":{"middlewareTimesIndex":"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array","receiveAsTokens":"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.","tokens":"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)","withdrawal":"The Withdrawal to complete."}},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"details":"See `completeQueuedWithdrawal` for relevant dev tags","params":{"middlewareTimesIndexes":"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.","receiveAsTokens":"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.","tokens":"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.","withdrawals":"The Withdrawals to complete."}},"cumulativeWithdrawalsQueued(address)":{"details":"This only increments (doesn't decrement), and is used to help ensure that otherwise identical withdrawals have unique hashes."},"decreaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to decrease.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to decrease the delegated shares."}},"delegateTo(address,(bytes,uint256),bytes32)":{"details":"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"A unique single use value tied to an individual signature.","approverSignatureAndExpiry":"Verifies the operator approves of this delegation","operator":"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer."}},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"details":"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.","approverSignatureAndExpiry":"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:","operator":"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.","staker":"The account delegating stake to an `operator` account","stakerSignatureAndExpiry":"Signed data from the staker authorizing delegating stake to an operator"}},"delegatedTo(address)":{"details":"Note that returning address(0) indicates that the staker is not actively delegated to any operator."},"delegationApproverSaltIsSpent(address,bytes32)":{"details":"Salts are used in the `delegateTo` and `delegateToBySignature` functions. Note that these functions only process the delegationApprover's signature + the provided salt if the operator being delegated to has specified a nonzero address as their `delegationApprover`."},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712."},"increaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to increase.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to increase the delegated shares."}},"modifyOperatorDetails((address,address,uint32))":{"details":"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).","params":{"newOperatorDetails":"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`."}},"operatorSaltIsSpent(address,bytes32)":{"details":"Salts is used in the `registerOperatorToAVS` function."},"operatorShares(address,address)":{"details":"By design, the following invariant should hold for each Strategy: (operator's shares in delegation manager) = sum (shares above zero of all stakers delegated to operator) = sum (delegateable shares of all stakers delegated to the operator)"},"registerAsOperator((address,address,uint32),string)":{"details":"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \"delegated to themself\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"is a URI for the operator's metadata, i.e. a link providing more details on the operator.","registeringOperatorDetails":"is the `OperatorDetails` for the operator."}},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"undelegate(address)":{"details":"Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified \"delegationApprover\"Reverts if the `staker` is already undelegated.","params":{"staker":"The account to be undelegated."},"returns":{"withdrawalRoot":"The root of the newly queued withdrawal, if a withdrawal was queued. Otherwise just bytes32(0)."}},"updateAVSMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an AVS"}},"updateOperatorMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an operator"}},"withdrawalDelayBlocks()":{"details":"Note that the withdrawal delay is not enforced on withdrawals of 'beaconChainETH', as the EigenPods have their own separate delay mechanic and we want to avoid stacking multiple enforced delays onto a single withdrawal."}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATION_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the DelegationApproval struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the Registration struct used by the contract"},"STAKER_DELEGATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the StakerDelegation struct used by the contract"},"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"notice":"Calculates the digestHash for a `staker` to sign to delegate to an `operator`"},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions."},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"notice":"Calculates the digest hash to be signed and used in the `delegateToBySignature` function"},"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":{"notice":"Returns the keccak256 hash of `withdrawal`."},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"notice":"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`"},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"notice":"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`"},"cumulativeWithdrawalsQueued(address)":{"notice":"Mapping: staker => cumulative number of queued withdrawals they have ever initiated."},"decreaseDelegatedShares(address,address,uint256)":{"notice":"Decreases a staker's delegated share balance in a strategy."},"delegateTo(address,(bytes,uint256),bytes32)":{"notice":"Caller delegates their stake to an operator."},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"notice":"Caller delegates a staker's stake to an operator with valid signatures from both parties."},"delegatedTo(address)":{"notice":"returns the address of the operator that `staker` is delegated to.Mapping: staker => operator whom the staker is currently delegated to."},"delegationApprover(address)":{"notice":"Returns the delegationApprover account for an operator"},"delegationApproverSaltIsSpent(address,bytes32)":{"notice":"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover."},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"increaseDelegatedShares(address,address,uint256)":{"notice":"Increases a staker's delegated share balance in a strategy."},"isDelegated(address)":{"notice":"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise."},"isOperator(address)":{"notice":"Returns true is an operator has previously registered for delegation."},"modifyOperatorDetails((address,address,uint32))":{"notice":"Updates an operator's stored `OperatorDetails`."},"operatorDetails(address)":{"notice":"Returns the OperatorDetails struct associated with an `operator`."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Returns whether or not the salt has already been used by the operator."},"operatorShares(address,address)":{"notice":"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator."},"queueWithdrawals((address[],uint256[],address)[])":{"notice":"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay."},"registerAsOperator((address,address,uint32),string)":{"notice":"Registers the caller as an operator in EigenLayer."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"stakerNonce(address)":{"notice":"Mapping: staker => number of signed delegation nonces (used in `delegateToBySignature`) from the staker that the contract has already checked"},"stakerOptOutWindowBlocks(address)":{"notice":"Returns the stakerOptOutWindowBlocks for an operator"},"undelegate(address)":{"notice":"Undelegates the staker from the operator who they are delegated to. Puts the staker into the \"undelegation limbo\" mode of the EigenPodManager and queues a withdrawal of all of the staker's shares in the StrategyManager (to the staker), if necessary."},"updateAVSMetadataURI(string)":{"notice":"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated."},"updateOperatorMetadataURI(string)":{"notice":"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated."},"withdrawalDelayBlocks()":{"notice":"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced)."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":"IDelegationManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":103} \ No newline at end of file diff --git a/out/IERC1271.sol/IERC1271.json b/out/IERC1271.sol/IERC1271.json new file mode 100644 index 00000000..e98275ce --- /dev/null +++ b/out/IERC1271.sol/IERC1271.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"details":"Should return whether the signature provided is valid for the provided data","params":{"hash":"Hash of the data to be signed","signature":"Signature byte array associated with _data"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":"IERC1271"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"}},"version":1},"id":42} \ No newline at end of file diff --git a/out/IERC20.sol/IERC20.json b/out/IERC20.sol/IERC20.json new file mode 100644 index 00000000..7c7bff66 --- /dev/null +++ b/out/IERC20.sol/IERC20.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"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\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"}},"version":1},"id":50} \ No newline at end of file diff --git a/out/IERC20Metadata.sol/IERC20Metadata.json b/out/IERC20Metadata.sol/IERC20Metadata.json new file mode 100644 index 00000000..caaf6301 --- /dev/null +++ b/out/IERC20Metadata.sol/IERC20Metadata.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":"IERC20Metadata"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IETHPOSDeposit.sol/IETHPOSDeposit.json b/out/IETHPOSDeposit.sol/IETHPOSDeposit.json new file mode 100644 index 00000000..b7f2e127 --- /dev/null +++ b/out/IETHPOSDeposit.sol/IETHPOSDeposit.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"deposit","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"withdrawal_credentials","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"deposit_data_root","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"get_deposit_count","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"get_deposit_root","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"DepositEvent","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"withdrawal_credentials","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"amount","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"signature","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"index","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deposit(bytes,bytes,bytes,bytes32)":"22895118","get_deposit_count()":"621fd130","get_deposit_root()":"c5f2892f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"withdrawal_credentials\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"amount\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"index\",\"type\":\"bytes\"}],\"name\":\"DepositEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"withdrawal_credentials\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"deposit_data_root\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_deposit_count\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_deposit_root\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deposit(bytes,bytes,bytes,bytes32)\":{\"params\":{\"deposit_data_root\":\"The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input.\",\"pubkey\":\"A BLS12-381 public key.\",\"signature\":\"A BLS12-381 signature.\",\"withdrawal_credentials\":\"Commitment to a public key for withdrawals.\"}},\"get_deposit_count()\":{\"returns\":{\"_0\":\"The deposit count encoded as a little endian 64-bit number.\"}},\"get_deposit_root()\":{\"returns\":{\"_0\":\"The deposit root hash.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"DepositEvent(bytes,bytes,bytes,bytes,bytes)\":{\"notice\":\"A processed deposit event.\"}},\"kind\":\"user\",\"methods\":{\"deposit(bytes,bytes,bytes,bytes32)\":{\"notice\":\"Submit a Phase 0 DepositData object.\"},\"get_deposit_count()\":{\"notice\":\"Query the current deposit count.\"},\"get_deposit_root()\":{\"notice\":\"Query the current deposit root hash.\"}},\"notice\":\"This is the Ethereum 2.0 deposit contract interface. For more information see the Phase 0 specification under https://github.com/ethereum/eth2.0-specs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":\"IETHPOSDeposit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes","indexed":false},{"internalType":"bytes","name":"withdrawal_credentials","type":"bytes","indexed":false},{"internalType":"bytes","name":"amount","type":"bytes","indexed":false},{"internalType":"bytes","name":"signature","type":"bytes","indexed":false},{"internalType":"bytes","name":"index","type":"bytes","indexed":false}],"type":"event","name":"DepositEvent","anonymous":false},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"withdrawal_credentials","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"deposit_data_root","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"get_deposit_count","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"get_deposit_root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"deposit(bytes,bytes,bytes,bytes32)":{"params":{"deposit_data_root":"The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input.","pubkey":"A BLS12-381 public key.","signature":"A BLS12-381 signature.","withdrawal_credentials":"Commitment to a public key for withdrawals."}},"get_deposit_count()":{"returns":{"_0":"The deposit count encoded as a little endian 64-bit number."}},"get_deposit_root()":{"returns":{"_0":"The deposit root hash."}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(bytes,bytes,bytes,bytes32)":{"notice":"Submit a Phase 0 DepositData object."},"get_deposit_count()":{"notice":"Query the current deposit count."},"get_deposit_root()":{"notice":"Query the current deposit root hash."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":"IETHPOSDeposit"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"}},"version":1},"id":104} \ No newline at end of file diff --git a/out/IEigenPod.sol/IEigenPod.json b/out/IEigenPod.sol/IEigenPod.json new file mode 100644 index 00000000..18e9d4bd --- /dev/null +++ b/out/IEigenPod.sol/IEigenPod.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"activateRestaking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"hasRestaked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mostRecentWithdrawalTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nonBeaconChainETHBalanceWei","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"podOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"provenWithdrawal","inputs":[{"name":"validatorPubkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"slot","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recoverTokens","inputs":[{"name":"tokenList","type":"address[]","internalType":"contract IERC20[]"},{"name":"amountsToWithdraw","type":"uint256[]","internalType":"uint256[]"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatorPubkeyHashToInfo","inputs":[{"name":"validatorPubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPod.ValidatorInfo","components":[{"name":"validatorIndex","type":"uint64","internalType":"uint64"},{"name":"restakedBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"mostRecentBalanceUpdateTimestamp","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorPubkeyToInfo","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPod.ValidatorInfo","components":[{"name":"validatorIndex","type":"uint64","internalType":"uint64"},{"name":"restakedBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"mostRecentBalanceUpdateTimestamp","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"pubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"verifyAndProcessWithdrawals","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"withdrawalProofs","type":"tuple[]","internalType":"struct BeaconChainProofs.WithdrawalProof[]","components":[{"name":"withdrawalProof","type":"bytes","internalType":"bytes"},{"name":"slotProof","type":"bytes","internalType":"bytes"},{"name":"executionPayloadProof","type":"bytes","internalType":"bytes"},{"name":"timestampProof","type":"bytes","internalType":"bytes"},{"name":"historicalSummaryBlockRootProof","type":"bytes","internalType":"bytes"},{"name":"blockRootIndex","type":"uint64","internalType":"uint64"},{"name":"historicalSummaryIndex","type":"uint64","internalType":"uint64"},{"name":"withdrawalIndex","type":"uint64","internalType":"uint64"},{"name":"blockRoot","type":"bytes32","internalType":"bytes32"},{"name":"slotRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestampRoot","type":"bytes32","internalType":"bytes32"},{"name":"executionPayloadRoot","type":"bytes32","internalType":"bytes32"}]},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"},{"name":"withdrawalFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyBalanceUpdates","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyWithdrawalCredentials","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"withdrawalCredentialProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawBeforeRestaking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawNonBeaconChainETHBalanceWei","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amountToWithdraw","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRestakedBeaconChainETH","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawableRestakedExecutionLayerGwei","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"EigenPodStaked","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"FullWithdrawalRedeemed","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"withdrawalTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawalAmountGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHReceived","inputs":[{"name":"amountReceived","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amountWithdrawn","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PartialWithdrawalRedeemed","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"withdrawalTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"partialWithdrawalAmountGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RestakedBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RestakingActivated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ValidatorBalanceUpdated","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"balanceTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"newValidatorBalanceGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ValidatorRestaked","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()":"1d905d5c","activateRestaking()":"0cd4649e","eigenPodManager()":"4665bcda","hasRestaked()":"3106ab53","initialize(address)":"c4d66de8","mostRecentWithdrawalTimestamp()":"87e0d289","nonBeaconChainETHBalanceWei()":"fe80b087","podOwner()":"0b18ff66","provenWithdrawal(bytes32,uint64)":"34bea20a","recoverTokens(address[],uint256[],address)":"dda3346c","stake(bytes,bytes,bytes32)":"9b4e4634","validatorPubkeyHashToInfo(bytes32)":"6fcd0e53","validatorPubkeyToInfo(bytes)":"b522538a","validatorStatus(bytes)":"58eaee79","validatorStatus(bytes32)":"7439841f","verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":"e251ef52","verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":"a50600f4","verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":"3f65cf19","withdrawBeforeRestaking()":"baa7145a","withdrawNonBeaconChainETHBalanceWei(address,uint256)":"e2c83445","withdrawRestakedBeaconChainETH(address,uint256)":"c4907442","withdrawableRestakedExecutionLayerGwei()":"3474aa16"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"}],\"name\":\"EigenPodStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalAmountGwei\",\"type\":\"uint64\"}],\"name\":\"FullWithdrawalRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceived\",\"type\":\"uint256\"}],\"name\":\"NonBeaconChainETHReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWithdrawn\",\"type\":\"uint256\"}],\"name\":\"NonBeaconChainETHWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"partialWithdrawalAmountGwei\",\"type\":\"uint64\"}],\"name\":\"PartialWithdrawalRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RestakedBeaconChainETHWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"RestakingActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"balanceTimestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\"}],\"name\":\"ValidatorBalanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"}],\"name\":\"ValidatorRestaked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateRestaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasRestaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mostRecentWithdrawalTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonBeaconChainETHBalanceWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"podOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"provenWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenList\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"recoverTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"depositDataRoot\",\"type\":\"bytes32\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"validatorPubkeyHashToInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"validatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"mostRecentBalanceUpdateTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IEigenPod.ValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"validatorPubkey\",\"type\":\"bytes\"}],\"name\":\"validatorPubkeyToInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"validatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"mostRecentBalanceUpdateTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IEigenPod.ValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"validatorPubkey\",\"type\":\"bytes\"}],\"name\":\"validatorStatus\",\"outputs\":[{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"validatorStatus\",\"outputs\":[{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"withdrawalProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"slotProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executionPayloadProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"timestampProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"historicalSummaryBlockRootProof\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"blockRootIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"historicalSummaryIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"withdrawalIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"slotRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"timestampRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionPayloadRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct BeaconChainProofs.WithdrawalProof[]\",\"name\":\"withdrawalProofs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"withdrawalFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyAndProcessWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint40[]\",\"name\":\"validatorIndices\",\"type\":\"uint40[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyBalanceUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"internalType\":\"uint40[]\",\"name\":\"validatorIndices\",\"type\":\"uint40[]\"},{\"internalType\":\"bytes[]\",\"name\":\"withdrawalCredentialProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyWithdrawalCredentials\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawBeforeRestaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawNonBeaconChainETHBalanceWei\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawRestakedBeaconChainETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Note that all beacon chain balances are stored as gwei within the beacon chain datastructures. We choose to account balances in terms of gwei in the EigenPod contract and convert to wei when making calls to other contracts\",\"kind\":\"dev\",\"methods\":{\"mostRecentWithdrawalTimestamp()\":{\"details\":\"This variable is only updated when the `withdrawBeforeRestaking` function is called, which can only occur before `hasRestaked` is set to true for this pod. Proofs for this pod are only valid against Beacon Chain state roots corresponding to timestamps after the stored `mostRecentWithdrawalTimestamp`.\"},\"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])\":{\"params\":{\"oracleTimestamp\":\"is the timestamp of the oracle slot that the withdrawal is being proven against\",\"validatorFields\":\"are the fields of the validators being proven\",\"validatorFieldsProofs\":\"is the proof of the validator's fields' in the validator tree\",\"withdrawalFields\":\"are the fields of the withdrawals being proven\",\"withdrawalProofs\":\"is the information needed to check the veracity of the block numbers and withdrawals being proven\"}},\"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])\":{\"details\":\"For more details on the Beacon Chain spec, see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator\",\"params\":{\"oracleTimestamp\":\"The oracleTimestamp whose state root the `proof` will be proven against. Must be within `VERIFY_BALANCE_UPDATE_WINDOW_SECONDS` of the current block.\",\"validatorFields\":\"are the fields of the \\\"Validator Container\\\", refer to consensus specs\",\"validatorFieldsProofs\":\"proofs against the `beaconStateRoot` for each validator in `validatorFields`\",\"validatorIndices\":\"is the list of indices of the validators being proven, refer to consensus specs\"}},\"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])\":{\"params\":{\"oracleTimestamp\":\"is the Beacon Chain timestamp whose state root the `proof` will be proven against.\",\"validatorFields\":\"are the fields of the \\\"Validator Container\\\", refer to consensus specs for details: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator\",\"validatorIndices\":\"is the list of indices of the validators being proven, refer to consensus specs\",\"withdrawalCredentialProofs\":\"is an array of proofs, where each proof proves each ETH validator's balance and withdrawal credentials against a beacon chain state root\"}},\"withdrawRestakedBeaconChainETH(address,uint256)\":{\"details\":\"The podOwner must have already proved sufficient withdrawals, so that this pod's `withdrawableRestakedExecutionLayerGwei` exceeds the `amountWei` input (when converted to GWEI).Reverts if `amountWei` is not a whole Gwei amount\"}},\"title\":\"The implementation contract used for restaking beacon chain ETH on EigenLayer\",\"version\":1},\"userdoc\":{\"events\":{\"EigenPodStaked(bytes)\":{\"notice\":\"Emitted when an ETH validator stakes via this eigenPod\"},\"FullWithdrawalRedeemed(uint40,uint64,address,uint64)\":{\"notice\":\"Emitted when an ETH validator is prove to have withdrawn from the beacon chain\"},\"NonBeaconChainETHReceived(uint256)\":{\"notice\":\"Emitted when ETH is received via the `receive` fallback\"},\"NonBeaconChainETHWithdrawn(address,uint256)\":{\"notice\":\"Emitted when ETH that was previously received via the `receive` fallback is withdrawn\"},\"PartialWithdrawalRedeemed(uint40,uint64,address,uint64)\":{\"notice\":\"Emitted when a partial withdrawal claim is successfully redeemed\"},\"RestakedBeaconChainETHWithdrawn(address,uint256)\":{\"notice\":\"Emitted when restaked beacon chain ETH is withdrawn from the eigenPod.\"},\"RestakingActivated(address)\":{\"notice\":\"Emitted when podOwner enables restaking\"},\"ValidatorBalanceUpdated(uint40,uint64,uint64)\":{\"notice\":\"Emitted when an ETH validator's balance is proven to be updated. Here newValidatorBalanceGwei\"},\"ValidatorRestaked(uint40)\":{\"notice\":\"Emitted when an ETH validator's withdrawal credentials are successfully verified to be pointed to this eigenPod\"}},\"kind\":\"user\",\"methods\":{\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()\":{\"notice\":\"The max amount of eth, in gwei, that can be restaked per validator\"},\"activateRestaking()\":{\"notice\":\"Called by the pod owner to activate restaking by withdrawing all existing ETH from the pod and preventing further withdrawals via \\\"withdrawBeforeRestaking()\\\"\"},\"eigenPodManager()\":{\"notice\":\"The single EigenPodManager for EigenLayer\"},\"hasRestaked()\":{\"notice\":\"an indicator of whether or not the podOwner has ever \\\"fully restaked\\\" by successfully calling `verifyCorrectWithdrawalCredentials`.\"},\"initialize(address)\":{\"notice\":\"Used to initialize the pointers to contracts crucial to the pod's functionality, in beacon proxy construction from EigenPodManager\"},\"mostRecentWithdrawalTimestamp()\":{\"notice\":\"The latest timestamp at which the pod owner withdrew the balance of the pod, via calling `withdrawBeforeRestaking`.\"},\"nonBeaconChainETHBalanceWei()\":{\"notice\":\"any ETH deposited into the EigenPod contract via the `receive` fallback function\"},\"podOwner()\":{\"notice\":\"The owner of this EigenPod\"},\"provenWithdrawal(bytes32,uint64)\":{\"notice\":\"mapping that tracks proven withdrawals\"},\"recoverTokens(address[],uint256[],address)\":{\"notice\":\"called by owner of a pod to remove any ERC20s deposited in the pod\"},\"stake(bytes,bytes,bytes32)\":{\"notice\":\"Called by EigenPodManager when the owner wants to create another ETH validator.\"},\"validatorPubkeyHashToInfo(bytes32)\":{\"notice\":\"Returns the validatorInfo struct for the provided pubkeyHash\"},\"validatorPubkeyToInfo(bytes)\":{\"notice\":\"Returns the validatorInfo struct for the provided pubkey\"},\"validatorStatus(bytes)\":{\"notice\":\"This returns the status of a given validator pubkey\"},\"validatorStatus(bytes32)\":{\"notice\":\"This returns the status of a given validator\"},\"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])\":{\"notice\":\"This function records full and partial withdrawals on behalf of one of the Ethereum validators for this EigenPod\"},\"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])\":{\"notice\":\"This function records an update (either increase or decrease) in the pod's balance in the StrategyManager. It also verifies a merkle proof of the validator's current beacon chain balance.\"},\"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])\":{\"notice\":\"This function verifies that the withdrawal credentials of validator(s) owned by the podOwner are pointed to this contract. It also verifies the effective balance of the validator. It verifies the provided proof of the ETH validator against the beacon chain state root, marks the validator as 'active' in EigenLayer, and credits the restaked ETH in Eigenlayer.\"},\"withdrawBeforeRestaking()\":{\"notice\":\"Called by the pod owner to withdraw the balance of the pod when `hasRestaked` is set to false\"},\"withdrawNonBeaconChainETHBalanceWei(address,uint256)\":{\"notice\":\"Called by the pod owner to withdraw the nonBeaconChainETHBalanceWei\"},\"withdrawRestakedBeaconChainETH(address,uint256)\":{\"notice\":\"Transfers `amountWei` in ether from this contract to the specified `recipient` addressCalled by EigenPodManager to withdrawBeaconChainETH that has been added to the EigenPod's balance due to a withdrawal from the beacon chain.\"},\"withdrawableRestakedExecutionLayerGwei()\":{\"notice\":\"the amount of execution layer ETH in this contract that is staked in EigenLayer (i.e. withdrawn from beaconchain but not EigenLayer),\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThe main functionalities are: - creating new ETH validators with their withdrawal credentials pointed to this contract - proving from beacon chain state roots that withdrawal credentials are pointed to this contract - proving from beacon chain state roots the balances of ETH validators with their withdrawal credentials pointed to this contract - updating aggregate balances in the EigenPodManager - withdrawing eth when withdrawals are initiated\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":\"IEigenPod\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes","indexed":false}],"type":"event","name":"EigenPodStaked","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"withdrawalTimestamp","type":"uint64","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint64","name":"withdrawalAmountGwei","type":"uint64","indexed":false}],"type":"event","name":"FullWithdrawalRedeemed","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amountReceived","type":"uint256","indexed":false}],"type":"event","name":"NonBeaconChainETHReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amountWithdrawn","type":"uint256","indexed":false}],"type":"event","name":"NonBeaconChainETHWithdrawn","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"withdrawalTimestamp","type":"uint64","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint64","name":"partialWithdrawalAmountGwei","type":"uint64","indexed":false}],"type":"event","name":"PartialWithdrawalRedeemed","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RestakedBeaconChainETHWithdrawn","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true}],"type":"event","name":"RestakingActivated","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"balanceTimestamp","type":"uint64","indexed":false},{"internalType":"uint64","name":"newValidatorBalanceGwei","type":"uint64","indexed":false}],"type":"event","name":"ValidatorBalanceUpdated","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false}],"type":"event","name":"ValidatorRestaked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"activateRestaking"},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hasRestaked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"mostRecentWithdrawalTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonBeaconChainETHBalanceWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"podOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"validatorPubkeyHash","type":"bytes32"},{"internalType":"uint64","name":"slot","type":"uint64"}],"stateMutability":"view","type":"function","name":"provenWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20[]","name":"tokenList","type":"address[]"},{"internalType":"uint256[]","name":"amountsToWithdraw","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"recoverTokens"},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"depositDataRoot","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"stake"},{"inputs":[{"internalType":"bytes32","name":"validatorPubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"validatorPubkeyHashToInfo","outputs":[{"internalType":"struct IEigenPod.ValidatorInfo","name":"","type":"tuple","components":[{"internalType":"uint64","name":"validatorIndex","type":"uint64"},{"internalType":"uint64","name":"restakedBalanceGwei","type":"uint64"},{"internalType":"uint64","name":"mostRecentBalanceUpdateTimestamp","type":"uint64"},{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes","name":"validatorPubkey","type":"bytes"}],"stateMutability":"view","type":"function","name":"validatorPubkeyToInfo","outputs":[{"internalType":"struct IEigenPod.ValidatorInfo","name":"","type":"tuple","components":[{"internalType":"uint64","name":"validatorIndex","type":"uint64"},{"internalType":"uint64","name":"restakedBalanceGwei","type":"uint64"},{"internalType":"uint64","name":"mostRecentBalanceUpdateTimestamp","type":"uint64"},{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes","name":"validatorPubkey","type":"bytes"}],"stateMutability":"view","type":"function","name":"validatorStatus","outputs":[{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"pubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"validatorStatus","outputs":[{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"struct BeaconChainProofs.WithdrawalProof[]","name":"withdrawalProofs","type":"tuple[]","components":[{"internalType":"bytes","name":"withdrawalProof","type":"bytes"},{"internalType":"bytes","name":"slotProof","type":"bytes"},{"internalType":"bytes","name":"executionPayloadProof","type":"bytes"},{"internalType":"bytes","name":"timestampProof","type":"bytes"},{"internalType":"bytes","name":"historicalSummaryBlockRootProof","type":"bytes"},{"internalType":"uint64","name":"blockRootIndex","type":"uint64"},{"internalType":"uint64","name":"historicalSummaryIndex","type":"uint64"},{"internalType":"uint64","name":"withdrawalIndex","type":"uint64"},{"internalType":"bytes32","name":"blockRoot","type":"bytes32"},{"internalType":"bytes32","name":"slotRoot","type":"bytes32"},{"internalType":"bytes32","name":"timestampRoot","type":"bytes32"},{"internalType":"bytes32","name":"executionPayloadRoot","type":"bytes32"}]},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"},{"internalType":"bytes32[][]","name":"withdrawalFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyAndProcessWithdrawals"},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"uint40[]","name":"validatorIndices","type":"uint40[]"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyBalanceUpdates"},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"uint40[]","name":"validatorIndices","type":"uint40[]"},{"internalType":"bytes[]","name":"withdrawalCredentialProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyWithdrawalCredentials"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawBeforeRestaking"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawNonBeaconChainETHBalanceWei"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRestakedBeaconChainETH"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawableRestakedExecutionLayerGwei","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{"mostRecentWithdrawalTimestamp()":{"details":"This variable is only updated when the `withdrawBeforeRestaking` function is called, which can only occur before `hasRestaked` is set to true for this pod. Proofs for this pod are only valid against Beacon Chain state roots corresponding to timestamps after the stored `mostRecentWithdrawalTimestamp`."},"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":{"params":{"oracleTimestamp":"is the timestamp of the oracle slot that the withdrawal is being proven against","validatorFields":"are the fields of the validators being proven","validatorFieldsProofs":"is the proof of the validator's fields' in the validator tree","withdrawalFields":"are the fields of the withdrawals being proven","withdrawalProofs":"is the information needed to check the veracity of the block numbers and withdrawals being proven"}},"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":{"details":"For more details on the Beacon Chain spec, see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator","params":{"oracleTimestamp":"The oracleTimestamp whose state root the `proof` will be proven against. Must be within `VERIFY_BALANCE_UPDATE_WINDOW_SECONDS` of the current block.","validatorFields":"are the fields of the \"Validator Container\", refer to consensus specs","validatorFieldsProofs":"proofs against the `beaconStateRoot` for each validator in `validatorFields`","validatorIndices":"is the list of indices of the validators being proven, refer to consensus specs"}},"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":{"params":{"oracleTimestamp":"is the Beacon Chain timestamp whose state root the `proof` will be proven against.","validatorFields":"are the fields of the \"Validator Container\", refer to consensus specs for details: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator","validatorIndices":"is the list of indices of the validators being proven, refer to consensus specs","withdrawalCredentialProofs":"is an array of proofs, where each proof proves each ETH validator's balance and withdrawal credentials against a beacon chain state root"}},"withdrawRestakedBeaconChainETH(address,uint256)":{"details":"The podOwner must have already proved sufficient withdrawals, so that this pod's `withdrawableRestakedExecutionLayerGwei` exceeds the `amountWei` input (when converted to GWEI).Reverts if `amountWei` is not a whole Gwei amount"}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()":{"notice":"The max amount of eth, in gwei, that can be restaked per validator"},"activateRestaking()":{"notice":"Called by the pod owner to activate restaking by withdrawing all existing ETH from the pod and preventing further withdrawals via \"withdrawBeforeRestaking()\""},"eigenPodManager()":{"notice":"The single EigenPodManager for EigenLayer"},"hasRestaked()":{"notice":"an indicator of whether or not the podOwner has ever \"fully restaked\" by successfully calling `verifyCorrectWithdrawalCredentials`."},"initialize(address)":{"notice":"Used to initialize the pointers to contracts crucial to the pod's functionality, in beacon proxy construction from EigenPodManager"},"mostRecentWithdrawalTimestamp()":{"notice":"The latest timestamp at which the pod owner withdrew the balance of the pod, via calling `withdrawBeforeRestaking`."},"nonBeaconChainETHBalanceWei()":{"notice":"any ETH deposited into the EigenPod contract via the `receive` fallback function"},"podOwner()":{"notice":"The owner of this EigenPod"},"provenWithdrawal(bytes32,uint64)":{"notice":"mapping that tracks proven withdrawals"},"recoverTokens(address[],uint256[],address)":{"notice":"called by owner of a pod to remove any ERC20s deposited in the pod"},"stake(bytes,bytes,bytes32)":{"notice":"Called by EigenPodManager when the owner wants to create another ETH validator."},"validatorPubkeyHashToInfo(bytes32)":{"notice":"Returns the validatorInfo struct for the provided pubkeyHash"},"validatorPubkeyToInfo(bytes)":{"notice":"Returns the validatorInfo struct for the provided pubkey"},"validatorStatus(bytes)":{"notice":"This returns the status of a given validator pubkey"},"validatorStatus(bytes32)":{"notice":"This returns the status of a given validator"},"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":{"notice":"This function records full and partial withdrawals on behalf of one of the Ethereum validators for this EigenPod"},"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":{"notice":"This function records an update (either increase or decrease) in the pod's balance in the StrategyManager. It also verifies a merkle proof of the validator's current beacon chain balance."},"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":{"notice":"This function verifies that the withdrawal credentials of validator(s) owned by the podOwner are pointed to this contract. It also verifies the effective balance of the validator. It verifies the provided proof of the ETH validator against the beacon chain state root, marks the validator as 'active' in EigenLayer, and credits the restaked ETH in Eigenlayer."},"withdrawBeforeRestaking()":{"notice":"Called by the pod owner to withdraw the balance of the pod when `hasRestaked` is set to false"},"withdrawNonBeaconChainETHBalanceWei(address,uint256)":{"notice":"Called by the pod owner to withdraw the nonBeaconChainETHBalanceWei"},"withdrawRestakedBeaconChainETH(address,uint256)":{"notice":"Transfers `amountWei` in ether from this contract to the specified `recipient` addressCalled by EigenPodManager to withdrawBeaconChainETH that has been added to the EigenPod's balance due to a withdrawal from the beacon chain."},"withdrawableRestakedExecutionLayerGwei()":{"notice":"the amount of execution layer ETH in this contract that is staked in EigenLayer (i.e. withdrawn from beaconchain but not EigenLayer),"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IEigenPod.sol":"IEigenPod"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":105} \ No newline at end of file diff --git a/out/IEigenPodManager.sol/IEigenPodManager.json b/out/IEigenPodManager.sol/IEigenPodManager.json new file mode 100644 index 00000000..916a993e --- /dev/null +++ b/out/IEigenPodManager.sol/IEigenPodManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"beaconChainOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeaconChainOracle"}],"stateMutability":"view"},{"type":"function","name":"createPod","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"eigenPodBeacon","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeacon"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"stateMutability":"view"},{"type":"function","name":"getBlockRootAtTimestamp","inputs":[{"name":"timestamp","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"hasPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxPods","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"numPods","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ownerToPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"podOwnerShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"recordBeaconChainETHBalanceUpdate","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"sharesDelta","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBeaconChainOracle","inputs":[{"name":"newBeaconChainOracle","type":"address","internalType":"contract IBeaconChainOracle"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawSharesAsTokens","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BeaconChainETHDeposited","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BeaconChainETHWithdrawalCompleted","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint96","indexed":false,"internalType":"uint96"},{"name":"delegatedAddress","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconOracleUpdated","inputs":[{"name":"newOracleAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MaxPodsUpdated","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"PodDeployed","inputs":[{"name":"eigenPod","type":"address","indexed":true,"internalType":"address"},{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addShares(address,uint256)":"0e81073c","beaconChainETHStrategy()":"9104c319","beaconChainOracle()":"c052bd61","createPod()":"84d81062","eigenPodBeacon()":"292b7b2b","ethPOS()":"74cdd798","getBlockRootAtTimestamp(uint64)":"d1c64cc9","getPod(address)":"a38406a3","hasPod(address)":"f6848d24","maxPods()":"c0ccbf10","numPods()":"a6a509be","ownerToPod(address)":"9ba06275","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","podOwnerShares(address)":"60f4062b","recordBeaconChainETHBalanceUpdate(address,int256)":"c2c51c40","removeShares(address,uint256)":"beffbb89","setPauserRegistry(address)":"10d67a2f","slasher()":"b1344271","stake(bytes,bytes,bytes32)":"9b4e4634","strategyManager()":"39b70e38","unpause(uint256)":"fabc1cbc","updateBeaconChainOracle(address)":"c1de3aef","withdrawSharesAsTokens(address,address,uint256)":"387b1300"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BeaconChainETHDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"BeaconChainETHWithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOracleAddress\",\"type\":\"address\"}],\"name\":\"BeaconOracleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MaxPodsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"eigenPod\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"PodDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"addShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainETHStrategy\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainOracle\",\"outputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createPod\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodBeacon\",\"outputs\":[{\"internalType\":\"contract IBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ethPOS\",\"outputs\":[{\"internalType\":\"contract IETHPOSDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"getBlockRootAtTimestamp\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"getPod\",\"outputs\":[{\"internalType\":\"contract IEigenPod\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"hasPod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPods\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numPods\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"ownerToPod\",\"outputs\":[{\"internalType\":\"contract IEigenPod\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"podOwnerShares\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"sharesDelta\",\"type\":\"int256\"}],\"name\":\"recordBeaconChainETHBalanceUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"removeShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"depositDataRoot\",\"type\":\"bytes32\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"newBeaconChainOracle\",\"type\":\"address\"}],\"name\":\"updateBeaconChainOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"withdrawSharesAsTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"addShares(address,uint256)\":{\"details\":\"Returns the number of shares added to `podOwnerShares[podOwner]` above zero, which will be less than the `shares` input in the event that the podOwner has an existing shares deficit (i.e. `podOwnerShares[podOwner]` starts below zero)Reverts if `shares` is not a whole Gwei amount\"},\"createPod()\":{\"details\":\"Function will revert if the `msg.sender` already has an EigenPod.Returns EigenPod address\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"podOwnerShares(address)\":{\"details\":\"The share amount can become negative. This is necessary to accommodate the fact that a pod owner's virtual beacon chain ETH shares can decrease between the pod owner queuing and completing a withdrawal. When the pod owner's shares would otherwise increase, this \\\"deficit\\\" is decreased first _instead_. Likewise, when a withdrawal is completed, this \\\"deficit\\\" is decreased and the withdrawal amount is decreased; We can think of this as the withdrawal \\\"paying off the deficit\\\".\"},\"recordBeaconChainETHBalanceUpdate(address,int256)\":{\"details\":\"Callable only by the podOwner's EigenPod contract.Reverts if `sharesDelta` is not a whole Gwei amount\",\"params\":{\"podOwner\":\"is the pod owner whose balance is being updated.\",\"sharesDelta\":\"is the change in podOwner's beaconChainETHStrategy shares\"}},\"removeShares(address,uint256)\":{\"details\":\"This function reverts if it would result in `podOwnerShares[podOwner]` being less than zero, i.e. it is forbidden for this function to result in the `podOwner` incurring a \\\"share deficit\\\". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive shares from the operator to whom the staker is delegated.Reverts if `shares` is not a whole Gwei amount\"},\"stake(bytes,bytes,bytes32)\":{\"params\":{\"depositDataRoot\":\"The root/hash of the deposit data for the validator's deposit.\",\"pubkey\":\"The 48 bytes public key of the beacon chain validator.\",\"signature\":\"The validator's signature of the deposit data.\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateBeaconChainOracle(address)\":{\"details\":\"Callable only by the owner of this contract (i.e. governance)\",\"params\":{\"newBeaconChainOracle\":\"is the new oracle contract being pointed to\"}},\"withdrawSharesAsTokens(address,address,uint256)\":{\"details\":\"Prioritizes decreasing the podOwner's share deficit, if they have oneReverts if `shares` is not a whole Gwei amount\"}},\"title\":\"Interface for factory that creates and manages solo staking pods that have their withdrawal credentials pointed to EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"BeaconChainETHDeposited(address,uint256)\":{\"notice\":\"Emitted to notify a deposit of beacon chain ETH recorded in the strategy manager\"},\"BeaconChainETHWithdrawalCompleted(address,uint256,uint96,address,address,bytes32)\":{\"notice\":\"Emitted when a withdrawal of beacon chain ETH is completed\"},\"BeaconOracleUpdated(address)\":{\"notice\":\"Emitted to notify the update of the beaconChainOracle address\"},\"MaxPodsUpdated(uint256,uint256)\":{\"notice\":\"Emitted when `maxPods` value is updated from `previousValue` to `newValue`\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"PodDeployed(address,address)\":{\"notice\":\"Emitted to notify the deployment of an EigenPod\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"addShares(address,uint256)\":{\"notice\":\"Increases the `podOwner`'s shares by `shares`, paying off deficit if possible. Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue\"},\"beaconChainETHStrategy()\":{\"notice\":\"returns canonical, virtual beaconChainETH strategy\"},\"beaconChainOracle()\":{\"notice\":\"Oracle contract that provides updates to the beacon chain's state\"},\"createPod()\":{\"notice\":\"Creates an EigenPod for the sender.\"},\"eigenPodBeacon()\":{\"notice\":\"Beacon proxy to which the EigenPods point\"},\"ethPOS()\":{\"notice\":\"The ETH2 Deposit Contract\"},\"getBlockRootAtTimestamp(uint64)\":{\"notice\":\"Returns the beacon block root at `timestamp`. Reverts if the Beacon block root at `timestamp` has not yet been finalized.\"},\"getPod(address)\":{\"notice\":\"Returns the address of the `podOwner`'s EigenPod (whether it is deployed yet or not).\"},\"hasPod(address)\":{\"notice\":\"Returns 'true' if the `podOwner` has created an EigenPod, and 'false' otherwise.\"},\"maxPods()\":{\"notice\":\"Returns the maximum number of EigenPods that can be created\"},\"numPods()\":{\"notice\":\"Returns the number of EigenPods that have been created\"},\"ownerToPod(address)\":{\"notice\":\"Returns the address of the `podOwner`'s EigenPod if it has been deployed.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"podOwnerShares(address)\":{\"notice\":\"Mapping from Pod owner owner to the number of shares they have in the virtual beacon chain ETH strategy.\"},\"recordBeaconChainETHBalanceUpdate(address,int256)\":{\"notice\":\"Changes the `podOwner`'s shares by `sharesDelta` and performs a call to the DelegationManager to ensure that delegated shares are also tracked correctly\"},\"removeShares(address,uint256)\":{\"notice\":\"Used by the DelegationManager to remove a pod owner's shares while they're in the withdrawal queue. Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero.\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"slasher()\":{\"notice\":\"EigenLayer's Slasher contract\"},\"stake(bytes,bytes,bytes32)\":{\"notice\":\"Stakes for a new beacon chain validator on the sender's EigenPod. Also creates an EigenPod for the sender if they don't have one already.\"},\"strategyManager()\":{\"notice\":\"EigenLayer's StrategyManager contract\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateBeaconChainOracle(address)\":{\"notice\":\"Updates the oracle contract that provides the beacon chain state root\"},\"withdrawSharesAsTokens(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to complete a withdrawal, sending tokens to some destination address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":\"IEigenPodManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BeaconChainETHDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint96","name":"nonce","type":"uint96","indexed":false},{"internalType":"address","name":"delegatedAddress","type":"address","indexed":false},{"internalType":"address","name":"withdrawer","type":"address","indexed":false},{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"BeaconChainETHWithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"address","name":"newOracleAddress","type":"address","indexed":true}],"type":"event","name":"BeaconOracleUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"MaxPodsUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"eigenPod","type":"address","indexed":true},{"internalType":"address","name":"podOwner","type":"address","indexed":true}],"type":"event","name":"PodDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainETHStrategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainOracle","outputs":[{"internalType":"contract IBeaconChainOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"createPod","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodBeacon","outputs":[{"internalType":"contract IBeacon","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ethPOS","outputs":[{"internalType":"contract IETHPOSDeposit","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlockRootAtTimestamp","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"getPod","outputs":[{"internalType":"contract IEigenPod","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"hasPod","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxPods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numPods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"ownerToPod","outputs":[{"internalType":"contract IEigenPod","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"podOwnerShares","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"int256","name":"sharesDelta","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"recordBeaconChainETHBalanceUpdate"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeShares"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"depositDataRoot","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"stake"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"contract IBeaconChainOracle","name":"newBeaconChainOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateBeaconChainOracle"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawSharesAsTokens"}],"devdoc":{"kind":"dev","methods":{"addShares(address,uint256)":{"details":"Returns the number of shares added to `podOwnerShares[podOwner]` above zero, which will be less than the `shares` input in the event that the podOwner has an existing shares deficit (i.e. `podOwnerShares[podOwner]` starts below zero)Reverts if `shares` is not a whole Gwei amount"},"createPod()":{"details":"Function will revert if the `msg.sender` already has an EigenPod.Returns EigenPod address"},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"podOwnerShares(address)":{"details":"The share amount can become negative. This is necessary to accommodate the fact that a pod owner's virtual beacon chain ETH shares can decrease between the pod owner queuing and completing a withdrawal. When the pod owner's shares would otherwise increase, this \"deficit\" is decreased first _instead_. Likewise, when a withdrawal is completed, this \"deficit\" is decreased and the withdrawal amount is decreased; We can think of this as the withdrawal \"paying off the deficit\"."},"recordBeaconChainETHBalanceUpdate(address,int256)":{"details":"Callable only by the podOwner's EigenPod contract.Reverts if `sharesDelta` is not a whole Gwei amount","params":{"podOwner":"is the pod owner whose balance is being updated.","sharesDelta":"is the change in podOwner's beaconChainETHStrategy shares"}},"removeShares(address,uint256)":{"details":"This function reverts if it would result in `podOwnerShares[podOwner]` being less than zero, i.e. it is forbidden for this function to result in the `podOwner` incurring a \"share deficit\". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive shares from the operator to whom the staker is delegated.Reverts if `shares` is not a whole Gwei amount"},"stake(bytes,bytes,bytes32)":{"params":{"depositDataRoot":"The root/hash of the deposit data for the validator's deposit.","pubkey":"The 48 bytes public key of the beacon chain validator.","signature":"The validator's signature of the deposit data."}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateBeaconChainOracle(address)":{"details":"Callable only by the owner of this contract (i.e. governance)","params":{"newBeaconChainOracle":"is the new oracle contract being pointed to"}},"withdrawSharesAsTokens(address,address,uint256)":{"details":"Prioritizes decreasing the podOwner's share deficit, if they have oneReverts if `shares` is not a whole Gwei amount"}},"version":1},"userdoc":{"kind":"user","methods":{"addShares(address,uint256)":{"notice":"Increases the `podOwner`'s shares by `shares`, paying off deficit if possible. Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue"},"beaconChainETHStrategy()":{"notice":"returns canonical, virtual beaconChainETH strategy"},"beaconChainOracle()":{"notice":"Oracle contract that provides updates to the beacon chain's state"},"createPod()":{"notice":"Creates an EigenPod for the sender."},"eigenPodBeacon()":{"notice":"Beacon proxy to which the EigenPods point"},"ethPOS()":{"notice":"The ETH2 Deposit Contract"},"getBlockRootAtTimestamp(uint64)":{"notice":"Returns the beacon block root at `timestamp`. Reverts if the Beacon block root at `timestamp` has not yet been finalized."},"getPod(address)":{"notice":"Returns the address of the `podOwner`'s EigenPod (whether it is deployed yet or not)."},"hasPod(address)":{"notice":"Returns 'true' if the `podOwner` has created an EigenPod, and 'false' otherwise."},"maxPods()":{"notice":"Returns the maximum number of EigenPods that can be created"},"numPods()":{"notice":"Returns the number of EigenPods that have been created"},"ownerToPod(address)":{"notice":"Returns the address of the `podOwner`'s EigenPod if it has been deployed."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"podOwnerShares(address)":{"notice":"Mapping from Pod owner owner to the number of shares they have in the virtual beacon chain ETH strategy."},"recordBeaconChainETHBalanceUpdate(address,int256)":{"notice":"Changes the `podOwner`'s shares by `sharesDelta` and performs a call to the DelegationManager to ensure that delegated shares are also tracked correctly"},"removeShares(address,uint256)":{"notice":"Used by the DelegationManager to remove a pod owner's shares while they're in the withdrawal queue. Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"slasher()":{"notice":"EigenLayer's Slasher contract"},"stake(bytes,bytes,bytes32)":{"notice":"Stakes for a new beacon chain validator on the sender's EigenPod. Also creates an EigenPod for the sender if they don't have one already."},"strategyManager()":{"notice":"EigenLayer's StrategyManager contract"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateBeaconChainOracle(address)":{"notice":"Updates the oracle contract that provides the beacon chain state root"},"withdrawSharesAsTokens(address,address,uint256)":{"notice":"Used by the DelegationManager to complete a withdrawal, sending tokens to some destination address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":"IEigenPodManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":106} \ No newline at end of file diff --git a/out/IMulticall3.sol/IMulticall3.json b/out/IMulticall3.sol/IMulticall3.json new file mode 100644 index 00000000..a61f1622 --- /dev/null +++ b/out/IMulticall3.sol/IMulticall3.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":36} \ No newline at end of file diff --git a/out/IPausable.sol/IPausable.json b/out/IPausable.sol/IPausable.json new file mode 100644 index 00000000..a93d60d5 --- /dev/null +++ b/out/IPausable.sol/IPausable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","setPauserRegistry(address)":"10d67a2f","unpause(uint256)":"fabc1cbc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Pausability is implemented using a uint256, which allows up to 256 different single bit-flags; each bit can potentially pause different functionality. Inspiration for this was taken from the NearBridge design here https://etherscan.io/address/0x3FEFc5A4B1c02f21cBc8D3613643ba0635b9a873#code. For the `pause` and `unpause` functions we've implemented, if you pause, you can only flip (any number of) switches to on/1 (aka \\\"paused\\\"), and if you unpause, you can only flip (any number of) switches to off/0 (aka \\\"paused\\\"). If you want a pauseXYZ function that just flips a single bit / \\\"pausing flag\\\", it will: 1) 'bit-wise and' (aka `&`) a flag with the current paused state (as a uint256) 2) update the paused state to this new valueWe note as well that we have chosen to identify flags by their *bit index* as opposed to their numerical value, so, e.g. defining `DEPOSITS_PAUSED = 3` indicates specifically that if the *third bit* of `_paused` is flipped -- i.e. it is a '1' -- then deposits should be paused\",\"kind\":\"dev\",\"methods\":{\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}}},\"title\":\"Adds pausability to a contract, with pausing & unpausing controlled by the `pauser` and `unpauser` of a PauserRegistry contract.\",\"version\":1},\"userdoc\":{\"events\":{\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceContracts that inherit from this contract may define their own `pause` and `unpause` (and/or related) functions. These functions should be permissioned as \\\"onlyPauser\\\" which defers to a `PauserRegistry` for determining access control.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IPausable.sol\":\"IPausable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}}},"version":1},"userdoc":{"kind":"user","methods":{"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IPausable.sol":"IPausable"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"}},"version":1},"id":107} \ No newline at end of file diff --git a/out/IPauserRegistry.sol/IPauserRegistry.json b/out/IPauserRegistry.sol/IPauserRegistry.json new file mode 100644 index 00000000..16475158 --- /dev/null +++ b/out/IPauserRegistry.sol/IPauserRegistry.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isPauser","inputs":[{"name":"pauser","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unpauser","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"PauserStatusChanged","inputs":[{"name":"pauser","type":"address","indexed":false,"internalType":"address"},{"name":"canPause","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"UnpauserChanged","inputs":[{"name":"previousUnpauser","type":"address","indexed":false,"internalType":"address"},{"name":"newUnpauser","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isPauser(address)":"46fbf68e","unpauser()":"eab66d7a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"canPause\",\"type\":\"bool\"}],\"name\":\"PauserStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousUnpauser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newUnpauser\",\"type\":\"address\"}],\"name\":\"UnpauserChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for the `PauserRegistry` contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isPauser(address)\":{\"notice\":\"Mapping of addresses to whether they hold the pauser role.\"},\"unpauser()\":{\"notice\":\"Unique address that holds the unpauser role. Capable of changing *both* the pauser and unpauser addresses.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":\"IPauserRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"pauser","type":"address","indexed":false},{"internalType":"bool","name":"canPause","type":"bool","indexed":false}],"type":"event","name":"PauserStatusChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"previousUnpauser","type":"address","indexed":false},{"internalType":"address","name":"newUnpauser","type":"address","indexed":false}],"type":"event","name":"UnpauserChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"pauser","type":"address"}],"stateMutability":"view","type":"function","name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"unpauser","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"isPauser(address)":{"notice":"Mapping of addresses to whether they hold the pauser role."},"unpauser()":{"notice":"Unique address that holds the unpauser role. Capable of changing *both* the pauser and unpauser addresses."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":"IPauserRegistry"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"}},"version":1},"id":108} \ No newline at end of file diff --git a/out/IPredicateClient.sol/IPredicateClient.json b/out/IPredicateClient.sol/IPredicateClient.json new file mode 100644 index 00000000..3a14c582 --- /dev/null +++ b/out/IPredicateClient.sol/IPredicateClient.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"setPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"setPolicy(string)":"6b4c991b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"setPolicy(string)\":{\"details\":\"This function enables clients to define execution rules or parameters for tasks they submit. The policy governs how tasks submitted by the caller are executed, ensuring compliance with predefined rules.\",\"params\":{\"_policyID\":\"A string representing the policyID from on chain.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setPolicy(string)\":{\"notice\":\"Sets a policy for the calling address, associating it with a policy document stored on IPFS.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IPredicateClient.sol\":\"IPredicateClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setPolicy"}],"devdoc":{"kind":"dev","methods":{"setPolicy(string)":{"details":"This function enables clients to define execution rules or parameters for tasks they submit. The policy governs how tasks submitted by the caller are executed, ensuring compliance with predefined rules.","params":{"_policyID":"A string representing the policyID from on chain."}}},"version":1},"userdoc":{"kind":"user","methods":{"setPolicy(string)":{"notice":"Sets a policy for the calling address, associating it with a policy document stored on IPFS."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IPredicateClient.sol":"IPredicateClient"},"evmVersion":"london","libraries":{}},"sources":{"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"}},"version":1},"id":74} \ No newline at end of file diff --git a/out/IPriceAggregator.sol/IPriceAggregator.json b/out/IPriceAggregator.sol/IPriceAggregator.json new file mode 100644 index 00000000..25457a17 --- /dev/null +++ b/out/IPriceAggregator.sol/IPriceAggregator.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"assetToAsset","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"twapPeriod","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"tokenID","type":"string","internalType":"string"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isTokenSupported","inputs":[{"name":"tokenID","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"assetToAsset(address,uint256,address,uint256)":"7c661949","getPrice(string,uint256)":"2ef3accc","isTokenSupported(string)":"0d3652ec"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"twapPeriod\",\"type\":\"uint256\"}],\"name\":\"assetToAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetToAsset(address,uint256,address,uint256)\":{\"params\":{\"amountIn\":\"Amount of tokenIn to be converted\",\"tokenIn\":\"Address of an ERC20 token contract to be converted\",\"tokenOut\":\"Address of an ERC20 token contract to convert into\",\"twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate, if applicable\"},\"returns\":{\"amountOut\":\"Amount of tokenOut received for amountIn of tokenIn\"}},\"getPrice(string,uint256)\":{\"params\":{\"amountIn\":\"Amount of token to be converted\",\"tokenID\":\"Identifier of the token\"},\"returns\":{\"_0\":\"price of the token in USDC\"}},\"isTokenSupported(string)\":{\"params\":{\"tokenID\":\"Identifier of the token\"},\"returns\":{\"_0\":\"true if token is supported\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assetToAsset(address,uint256,address,uint256)\":{\"notice\":\"Given a token and its amount, return the equivalent value in another token\"},\"getPrice(string,uint256)\":{\"notice\":\"Given a token, return the price of the token\"},\"isTokenSupported(string)\":{\"notice\":\"is token supported\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IPriceAggregator.sol\":\"IPriceAggregator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"twapPeriod","type":"uint256"}],"stateMutability":"view","type":"function","name":"assetToAsset","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"stateMutability":"view","type":"function","name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"assetToAsset(address,uint256,address,uint256)":{"params":{"amountIn":"Amount of tokenIn to be converted","tokenIn":"Address of an ERC20 token contract to be converted","tokenOut":"Address of an ERC20 token contract to convert into","twapPeriod":"Number of seconds in the past to consider for the TWAP rate, if applicable"},"returns":{"amountOut":"Amount of tokenOut received for amountIn of tokenIn"}},"getPrice(string,uint256)":{"params":{"amountIn":"Amount of token to be converted","tokenID":"Identifier of the token"},"returns":{"_0":"price of the token in USDC"}},"isTokenSupported(string)":{"params":{"tokenID":"Identifier of the token"},"returns":{"_0":"true if token is supported"}}},"version":1},"userdoc":{"kind":"user","methods":{"assetToAsset(address,uint256,address,uint256)":{"notice":"Given a token and its amount, return the equivalent value in another token"},"getPrice(string,uint256)":{"notice":"Given a token, return the price of the token"},"isTokenSupported(string)":{"notice":"is token supported"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IPriceAggregator.sol":"IPriceAggregator"},"evmVersion":"london","libraries":{}},"sources":{"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/out/IRateLimiter.sol/IRateLimiter.json b/out/IRateLimiter.sol/IRateLimiter.json new file mode 100644 index 00000000..f53640ce --- /dev/null +++ b/out/IRateLimiter.sol/IRateLimiter.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkIfLimitExceeds","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"token","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"disableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"evaluateRateLimit","inputs":[{"name":"token","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRateLimitParams","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct RateLimitParams","components":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTxBatchAtPtr","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startBlockNumber","type":"uint256","internalType":"uint256"},{"name":"endBlockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTxHistory","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct TxHistory","components":[{"name":"total","type":"uint256","internalType":"uint256"},{"name":"ptr","type":"uint256","internalType":"uint256"},{"name":"txBatches","type":"tuple[]","internalType":"struct TxBatch[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startBlockNumber","type":"uint256","internalType":"uint256"},{"name":"endBlockNumber","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"removeRateLimitBypass","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"_priceOracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRateLimitBypass","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRateLimitParams","inputs":[{"name":"params","type":"tuple","internalType":"struct RateLimitParams","components":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"checkIfLimitExceeds(address,string,uint256)":"2cc5b108","disableRateLimiter()":"b74437a5","enableRateLimiter()":"c47f1ac3","evaluateRateLimit(string,uint256)":"5e89c3f4","getRateLimitParams()":"a8ca8964","getTxBatchAtPtr(address)":"112f6a31","getTxHistory(address)":"7012b1d4","removeRateLimitBypass(address)":"c60c0646","setPriceOracle(address)":"530e784f","setRateLimitBypass(address)":"286df6b7","setRateLimitParams((uint256,uint256,uint64))":"daf42d6c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"checkIfLimitExceeds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"evaluateRateLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitParams\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"internalType\":\"struct RateLimitParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTxBatchAtPtr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTxHistory\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ptr\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct TxBatch[]\",\"name\":\"txBatches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TxHistory\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeRateLimitBypass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"setRateLimitBypass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"internalType\":\"struct RateLimitParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"setRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkIfLimitExceeds(address,string,uint256)\":{\"details\":\"also returns remaining amount that can be transacted\",\"params\":{\"amount\":\"is the amount of tokens to be evaluated\",\"sender\":\"is the address of the sender to be evaluated\",\"token\":\"is the string for the token to be evaluated\"}},\"disableRateLimiter()\":{\"details\":\"This function disables the rate limiter for the calling address\"},\"enableRateLimiter()\":{\"details\":\"This function enables the rate limiter for the calling address\"},\"evaluateRateLimit(string,uint256)\":{\"params\":{\"amount\":\"is the amount of tokens to be evaluated\",\"token\":\"is the string for the token to be evaluated\"}},\"getRateLimitParams()\":{\"details\":\"This function returns the rate limit parameters for the calling address.\"},\"getTxBatchAtPtr(address)\":{\"details\":\"This function gets Txn batch at pointer for the calling addressFails when pointer is out of bounds\",\"params\":{\"user\":\"is the address of the user to be evaluated\"}},\"getTxHistory(address)\":{\"details\":\"This function returns the historical transaction information for the user address\",\"params\":{\"user\":\"is the address of the user to be evaluated\"}},\"removeRateLimitBypass(address)\":{\"details\":\"This function removes the rate limiter bypass for the calling address\",\"params\":{\"user\":\"is the address of the user to be evaluated\"}},\"setPriceOracle(address)\":{\"details\":\"This function sets the price oracle for the calling address\",\"params\":{\"_priceOracle\":\"the price oracle to be set\"}},\"setRateLimitBypass(address)\":{\"details\":\"This function bypasses the rate limiter for the calling address\",\"params\":{\"user\":\"is the address of the user to be evaluated\"}},\"setRateLimitParams((uint256,uint256,uint64))\":{\"details\":\"This function sets the rate limit parameters for the calling address.\",\"params\":{\"params\":\"the rate limit parameters to be set\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkIfLimitExceeds(address,string,uint256)\":{\"notice\":\"Evaluates the USDC amount for tokens using token amount and the token ticker to determine if the transaction should be rate limited.\"},\"disableRateLimiter()\":{\"notice\":\"Disables the rate limiter for the calling address.\"},\"enableRateLimiter()\":{\"notice\":\"Enables the rate limiter for the calling address.\"},\"evaluateRateLimit(string,uint256)\":{\"notice\":\"Evaluates the USDC amount for tokens using token amount and the token ticker to determine if the transaction should be rate limited.\"},\"getRateLimitParams()\":{\"notice\":\"Returns the rate limit parameters for the calling address.\"},\"getTxBatchAtPtr(address)\":{\"notice\":\"Gets Txn batch at pointer for the calling address\"},\"getTxHistory(address)\":{\"notice\":\"Returns the historical transaction information for the calling address.\"},\"removeRateLimitBypass(address)\":{\"notice\":\"Removes the rate limiter bypass for the calling address.\"},\"setPriceOracle(address)\":{\"notice\":\"Sets the price oracle for the calling address.\"},\"setRateLimitBypass(address)\":{\"notice\":\"Bypasses the rate limiter for the calling address.\"},\"setRateLimitParams((uint256,uint256,uint64))\":{\"notice\":\"Sets the rate limit parameters for the calling address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IRateLimiter.sol\":\"IRateLimiter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"src/interfaces/IRateLimiter.sol\":{\"keccak256\":\"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf\",\"dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string","name":"token","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"checkIfLimitExceeds","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableRateLimiter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"enableRateLimiter"},{"inputs":[{"internalType":"string","name":"token","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"evaluateRateLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRateLimitParams","outputs":[{"internalType":"struct RateLimitParams","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getTxBatchAtPtr","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startBlockNumber","type":"uint256"},{"internalType":"uint256","name":"endBlockNumber","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getTxHistory","outputs":[{"internalType":"struct TxHistory","name":"","type":"tuple","components":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"ptr","type":"uint256"},{"internalType":"struct TxBatch[]","name":"txBatches","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startBlockNumber","type":"uint256"},{"internalType":"uint256","name":"endBlockNumber","type":"uint256"}]}]}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeRateLimitBypass"},{"inputs":[{"internalType":"address","name":"_priceOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRateLimitBypass"},{"inputs":[{"internalType":"struct RateLimitParams","name":"params","type":"tuple","components":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setRateLimitParams"}],"devdoc":{"kind":"dev","methods":{"checkIfLimitExceeds(address,string,uint256)":{"details":"also returns remaining amount that can be transacted","params":{"amount":"is the amount of tokens to be evaluated","sender":"is the address of the sender to be evaluated","token":"is the string for the token to be evaluated"}},"disableRateLimiter()":{"details":"This function disables the rate limiter for the calling address"},"enableRateLimiter()":{"details":"This function enables the rate limiter for the calling address"},"evaluateRateLimit(string,uint256)":{"params":{"amount":"is the amount of tokens to be evaluated","token":"is the string for the token to be evaluated"}},"getRateLimitParams()":{"details":"This function returns the rate limit parameters for the calling address."},"getTxBatchAtPtr(address)":{"details":"This function gets Txn batch at pointer for the calling addressFails when pointer is out of bounds","params":{"user":"is the address of the user to be evaluated"}},"getTxHistory(address)":{"details":"This function returns the historical transaction information for the user address","params":{"user":"is the address of the user to be evaluated"}},"removeRateLimitBypass(address)":{"details":"This function removes the rate limiter bypass for the calling address","params":{"user":"is the address of the user to be evaluated"}},"setPriceOracle(address)":{"details":"This function sets the price oracle for the calling address","params":{"_priceOracle":"the price oracle to be set"}},"setRateLimitBypass(address)":{"details":"This function bypasses the rate limiter for the calling address","params":{"user":"is the address of the user to be evaluated"}},"setRateLimitParams((uint256,uint256,uint64))":{"details":"This function sets the rate limit parameters for the calling address.","params":{"params":"the rate limit parameters to be set"}}},"version":1},"userdoc":{"kind":"user","methods":{"checkIfLimitExceeds(address,string,uint256)":{"notice":"Evaluates the USDC amount for tokens using token amount and the token ticker to determine if the transaction should be rate limited."},"disableRateLimiter()":{"notice":"Disables the rate limiter for the calling address."},"enableRateLimiter()":{"notice":"Enables the rate limiter for the calling address."},"evaluateRateLimit(string,uint256)":{"notice":"Evaluates the USDC amount for tokens using token amount and the token ticker to determine if the transaction should be rate limited."},"getRateLimitParams()":{"notice":"Returns the rate limit parameters for the calling address."},"getTxBatchAtPtr(address)":{"notice":"Gets Txn batch at pointer for the calling address"},"getTxHistory(address)":{"notice":"Returns the historical transaction information for the calling address."},"removeRateLimitBypass(address)":{"notice":"Removes the rate limiter bypass for the calling address."},"setPriceOracle(address)":{"notice":"Sets the price oracle for the calling address."},"setRateLimitBypass(address)":{"notice":"Bypasses the rate limiter for the calling address."},"setRateLimitParams((uint256,uint256,uint64))":{"notice":"Sets the rate limit parameters for the calling address."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IRateLimiter.sol":"IRateLimiter"},"evmVersion":"london","libraries":{}},"sources":{"src/interfaces/IRateLimiter.sol":{"keccak256":"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4","urls":["bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf","dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/out/IServiceManager.sol/IServiceManager.json b/out/IServiceManager.sol/IServiceManager.json new file mode 100644 index 00000000..c59213c7 --- /dev/null +++ b/out/IServiceManager.sol/IServiceManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"},{"name":"_policy","type":"string","internalType":"string"},{"name":"_quorumThreshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deploySocialGraph","inputs":[{"name":"_socialGraphID","type":"string","internalType":"string"},{"name":"_socialGraphConfig","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDeployedPolicies","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRestakedStrategies","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRestakeableStrategies","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSocialGraphIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operatorSigningKey","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePolicy","inputs":[{"name":"policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rotatePredicateSigningKey","inputs":[{"name":"_oldSigningKey","type":"address","internalType":"address"},{"name":"_newSigningKey","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetadataURI","inputs":[{"name":"_metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPolicy","inputs":[{"name":"policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateSignatures","inputs":[{"name":"_task","type":"tuple","internalType":"struct Task","components":[{"name":"taskId","type":"string","internalType":"string"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"encodedSigAndArgs","type":"bytes","internalType":"bytes"},{"name":"policyID","type":"string","internalType":"string"},{"name":"quorumThresholdCount","type":"uint32","internalType":"uint32"},{"name":"expireByBlockNumber","type":"uint256","internalType":"uint256"}]},{"name":"signerAddresses","type":"address[]","internalType":"address[]"},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"isVerified","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addStrategy(address,uint8,uint256)":"66f17e73","deployPolicy(string,string,uint256)":"c0443c5f","deploySocialGraph(string,string)":"d20e78c9","deregisterOperatorFromAVS(address)":"a364f4da","getDeployedPolicies()":"0b3ce015","getOperatorRestakedStrategies(address)":"33cfb7b7","getRestakeableStrategies()":"e481af9d","getSocialGraphIDs()":"d18a1325","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","removePolicy(string)":"34099ba1","removeStrategy(address)":"175188e8","rotatePredicateSigningKey(address,address)":"001ba1eb","setMetadataURI(string)":"750521f5","setPolicy(string)":"6b4c991b","validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])":"18cea58d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_policy\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_quorumThreshold\",\"type\":\"uint256\"}],\"name\":\"deployPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_socialGraphID\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_socialGraphConfig\",\"type\":\"string\"}],\"name\":\"deploySocialGraph\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeployedPolicies\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSocialGraphIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorSigningKey\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"}],\"name\":\"removePolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oldSigningKey\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_newSigningKey\",\"type\":\"address\"}],\"name\":\"rotatePredicateSigningKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"setMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedSigAndArgs\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"quorumThresholdCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"expireByBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct Task\",\"name\":\"_task\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"validateSignatures\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isVerified\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Predicate Labs, Inc\",\"kind\":\"dev\",\"methods\":{\"addStrategy(address,uint8,uint256)\":{\"details\":\"Only callable by the contract owner. Adds a strategy that operators can stake on.Emits a StrategyAdded event upon successful addition of the strategyReverts if the strategy does not exist or is already added\",\"params\":{\"_strategy\":\"The address of the strategy contract to add\",\"index\":\"The index of the strategy within the quorum\",\"quorumNumber\":\"The quorum number associated with the strategy\"}},\"deployPolicy(string,string,uint256)\":{\"details\":\"Only callable by service manager deployerEmits a DeployedPolicy event upon successful deployment\",\"params\":{\"_policy\":\"string containing the policy details\",\"_policyID\":\"string pointing to the policy details\",\"_quorumThreshold\":\"The number of signatures required to authorize a task\"}},\"deploySocialGraph(string,string)\":{\"details\":\"Only callable by service manager deployerEmits a SocialGraphDeployed event upon successful deployment\",\"params\":{\"_socialGraphConfig\":\"is the config for the social graph\",\"_socialGraphID\":\"is a unique identifier\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"getOperatorRestakedStrategies(address)\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately\",\"params\":{\"operator\":\"The address of the operator to get restaked strategies for\"}},\"getRestakeableStrategies()\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\",\"operatorSigningKey\":\"The address of the operator's signing key.\"}},\"removePolicy(string)\":{\"details\":\"Only callable by client contracts or EOAs to disassociate a policy with their addressEmits a RemovedPolicy event upon successful association\",\"params\":{\"policyID\":\"string pointing to the policy details\"}},\"removeStrategy(address)\":{\"details\":\"Only callable by the contract owner. Removes a strategy that operators are currently able to stake on.Emits a StrategyRemoved event upon successful removal of the strategyReverts if the strategy is not currently added or if the address is invalid\",\"params\":{\"_strategy\":\"The address of the strategy contract to remove\"}},\"rotatePredicateSigningKey(address,address)\":{\"params\":{\"_newSigningKey\":\"address of the new signing key to add\",\"_oldSigningKey\":\"address of the old signing key to remove\"}},\"setMetadataURI(string)\":{\"params\":{\"_metadataURI\":\"is the metadata URI for the AVS\"}},\"setPolicy(string)\":{\"details\":\"Only callable by client contracts or EOAs to associate a policy with their addressEmits a SetPolicy event upon successful association\",\"params\":{\"policyID\":\"string pointing to the policy details\"}},\"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])\":{\"details\":\"This function checks the signatures against the hash of the task parameters to ensure task authenticity and authorization\",\"params\":{\"_task\":\"Parameters of the task including sender, target, function signature, arguments, quorum count, and expiry block\",\"signatures\":\"Array of signatures from the operators authorizing the task\",\"signerAddresses\":\"Array of addresses of the operators who signed the task\"},\"returns\":{\"isVerified\":\"Boolean indicating if the task has been verified by the required number of operators\"}}},\"title\":\"Minimal interface for a ServiceManager-type contract that forms the single point for an AVS to push updates to EigenLayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addStrategy(address,uint8,uint256)\":{\"notice\":\"Adds a new strategy to the Service Manager\"},\"deployPolicy(string,string,uint256)\":{\"notice\":\"Deploys a policy with ID with execution rules or parameters for tasks\"},\"deploySocialGraph(string,string)\":{\"notice\":\"Deploys a social graph which clients can use in policy\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Forwards a call to EigenLayer's DelegationManager contract to confirm operator deregistration from the AVS\"},\"getDeployedPolicies()\":{\"notice\":\"Gets array of deployed policies\"},\"getOperatorRestakedStrategies(address)\":{\"notice\":\"Returns the list of strategies that the operator has potentially restaked on the AVS\"},\"getRestakeableStrategies()\":{\"notice\":\"Returns the list of strategies that the AVS supports for restaking\"},\"getSocialGraphIDs()\":{\"notice\":\"Returns the list of social graph IDs that the AVS supports\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Forwards a call to EigenLayer's DelegationManager contract to confirm operator registration with the AVS\"},\"removePolicy(string)\":{\"notice\":\"Removes a policy ID for the sender, removing execution rules or parameters for tasks\"},\"removeStrategy(address)\":{\"notice\":\"Removes an existing strategy from the Service Manager\"},\"rotatePredicateSigningKey(address,address)\":{\"notice\":\"Enables the rotation of Predicate Signing Key for an operator\"},\"setMetadataURI(string)\":{\"notice\":\"Sets the metadata URI for the AVS\"},\"setPolicy(string)\":{\"notice\":\"Sets a policy ID for the sender, defining execution rules or parameters for tasks\"},\"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])\":{\"notice\":\"Verifies if a task is authorized by the required number of operators\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IServiceManager.sol\":\"IServiceManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addStrategy"},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"},{"internalType":"string","name":"_policy","type":"string"},{"internalType":"uint256","name":"_quorumThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deployPolicy"},{"inputs":[{"internalType":"string","name":"_socialGraphID","type":"string"},{"internalType":"string","name":"_socialGraphConfig","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deploySocialGraph"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"getDeployedPolicies","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRestakedStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRestakeableStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSocialGraphIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"address","name":"operatorSigningKey","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[{"internalType":"string","name":"policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removePolicy"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategy"},{"inputs":[{"internalType":"address","name":"_oldSigningKey","type":"address"},{"internalType":"address","name":"_newSigningKey","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rotatePredicateSigningKey"},{"inputs":[{"internalType":"string","name":"_metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setMetadataURI"},{"inputs":[{"internalType":"string","name":"policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setPolicy"},{"inputs":[{"internalType":"struct Task","name":"_task","type":"tuple","components":[{"internalType":"string","name":"taskId","type":"string"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"encodedSigAndArgs","type":"bytes"},{"internalType":"string","name":"policyID","type":"string"},{"internalType":"uint32","name":"quorumThresholdCount","type":"uint32"},{"internalType":"uint256","name":"expireByBlockNumber","type":"uint256"}]},{"internalType":"address[]","name":"signerAddresses","type":"address[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"validateSignatures","outputs":[{"internalType":"bool","name":"isVerified","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"addStrategy(address,uint8,uint256)":{"details":"Only callable by the contract owner. Adds a strategy that operators can stake on.Emits a StrategyAdded event upon successful addition of the strategyReverts if the strategy does not exist or is already added","params":{"_strategy":"The address of the strategy contract to add","index":"The index of the strategy within the quorum","quorumNumber":"The quorum number associated with the strategy"}},"deployPolicy(string,string,uint256)":{"details":"Only callable by service manager deployerEmits a DeployedPolicy event upon successful deployment","params":{"_policy":"string containing the policy details","_policyID":"string pointing to the policy details","_quorumThreshold":"The number of signatures required to authorize a task"}},"deploySocialGraph(string,string)":{"details":"Only callable by service manager deployerEmits a SocialGraphDeployed event upon successful deployment","params":{"_socialGraphConfig":"is the config for the social graph","_socialGraphID":"is a unique identifier"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"getOperatorRestakedStrategies(address)":{"details":"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately","params":{"operator":"The address of the operator to get restaked strategies for"}},"getRestakeableStrategies()":{"details":"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately"},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operatorSignature":"The signature, salt, and expiry of the operator's signature.","operatorSigningKey":"The address of the operator's signing key."}},"removePolicy(string)":{"details":"Only callable by client contracts or EOAs to disassociate a policy with their addressEmits a RemovedPolicy event upon successful association","params":{"policyID":"string pointing to the policy details"}},"removeStrategy(address)":{"details":"Only callable by the contract owner. Removes a strategy that operators are currently able to stake on.Emits a StrategyRemoved event upon successful removal of the strategyReverts if the strategy is not currently added or if the address is invalid","params":{"_strategy":"The address of the strategy contract to remove"}},"rotatePredicateSigningKey(address,address)":{"params":{"_newSigningKey":"address of the new signing key to add","_oldSigningKey":"address of the old signing key to remove"}},"setMetadataURI(string)":{"params":{"_metadataURI":"is the metadata URI for the AVS"}},"setPolicy(string)":{"details":"Only callable by client contracts or EOAs to associate a policy with their addressEmits a SetPolicy event upon successful association","params":{"policyID":"string pointing to the policy details"}},"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])":{"details":"This function checks the signatures against the hash of the task parameters to ensure task authenticity and authorization","params":{"_task":"Parameters of the task including sender, target, function signature, arguments, quorum count, and expiry block","signatures":"Array of signatures from the operators authorizing the task","signerAddresses":"Array of addresses of the operators who signed the task"},"returns":{"isVerified":"Boolean indicating if the task has been verified by the required number of operators"}}},"version":1},"userdoc":{"kind":"user","methods":{"addStrategy(address,uint8,uint256)":{"notice":"Adds a new strategy to the Service Manager"},"deployPolicy(string,string,uint256)":{"notice":"Deploys a policy with ID with execution rules or parameters for tasks"},"deploySocialGraph(string,string)":{"notice":"Deploys a social graph which clients can use in policy"},"deregisterOperatorFromAVS(address)":{"notice":"Forwards a call to EigenLayer's DelegationManager contract to confirm operator deregistration from the AVS"},"getDeployedPolicies()":{"notice":"Gets array of deployed policies"},"getOperatorRestakedStrategies(address)":{"notice":"Returns the list of strategies that the operator has potentially restaked on the AVS"},"getRestakeableStrategies()":{"notice":"Returns the list of strategies that the AVS supports for restaking"},"getSocialGraphIDs()":{"notice":"Returns the list of social graph IDs that the AVS supports"},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Forwards a call to EigenLayer's DelegationManager contract to confirm operator registration with the AVS"},"removePolicy(string)":{"notice":"Removes a policy ID for the sender, removing execution rules or parameters for tasks"},"removeStrategy(address)":{"notice":"Removes an existing strategy from the Service Manager"},"rotatePredicateSigningKey(address,address)":{"notice":"Enables the rotation of Predicate Signing Key for an operator"},"setMetadataURI(string)":{"notice":"Sets the metadata URI for the AVS"},"setPolicy(string)":{"notice":"Sets a policy ID for the sender, defining execution rules or parameters for tasks"},"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])":{"notice":"Verifies if a task is authorized by the required number of operators"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IServiceManager.sol":"IServiceManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"}},"version":1},"id":77} \ No newline at end of file diff --git a/out/ISignatureUtils.sol/ISignatureUtils.json b/out/ISignatureUtils.sol/ISignatureUtils.json new file mode 100644 index 00000000..bbd57db8 --- /dev/null +++ b/out/ISignatureUtils.sol/ISignatureUtils.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"The interface for common signature utilities.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":\"ISignatureUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":"ISignatureUtils"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"}},"version":1},"id":109} \ No newline at end of file diff --git a/out/ISlasher.sol/ISlasher.json b/out/ISlasher.sol/ISlasher.json new file mode 100644 index 00000000..1581db9d --- /dev/null +++ b/out/ISlasher.sol/ISlasher.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"canSlash","inputs":[{"name":"toBeSlashed","type":"address","internalType":"address"},{"name":"slashingContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"contractCanSlashOperatorUntilBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"freezeOperator","inputs":[{"name":"toBeFrozen","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCorrectValueForInsertAfter","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"updateBlock","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMiddlewareTimesIndexServeUntilBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getMiddlewareTimesIndexStalestUpdateBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"isFrozen","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestUpdateBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"middlewareTimesLength","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorToMiddlewareTimes","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"arrayIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ISlasher.MiddlewareTimes","components":[{"name":"stalestUpdateBlock","type":"uint32","internalType":"uint32"},{"name":"latestServeUntilBlock","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorWhitelistedContractsLinkedListEntry","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"node","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorWhitelistedContractsLinkedListSize","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIntoSlashing","inputs":[{"name":"contractAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordFirstStakeUpdate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLastStakeUpdateAndRevokeSlashingAbility","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordStakeUpdate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"updateBlock","type":"uint32","internalType":"uint32"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"},{"name":"insertAfter","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetFrozenStatus","inputs":[{"name":"frozenAddresses","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"event","name":"FrozenStatusReset","inputs":[{"name":"previouslySlashedAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MiddlewareTimesAdded","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stalestUpdateBlock","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"latestServeUntilBlock","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"OperatorFrozen","inputs":[{"name":"slashedOperator","type":"address","indexed":true,"internalType":"address"},{"name":"slashingContract","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptedIntoSlashing","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingAbilityRevoked","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"contractCanSlashOperatorUntilBlock","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canSlash(address,address)":"d98128c0","canWithdraw(address,uint32,uint256)":"8105e043","contractCanSlashOperatorUntilBlock(address,address)":"6f0c2f74","delegation()":"df5cf723","freezeOperator(address)":"38c8ee64","getCorrectValueForInsertAfter(address,uint32)":"723e59c7","getMiddlewareTimesIndexServeUntilBlock(address,uint32)":"7259a45c","getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)":"1874e5ae","isFrozen(address)":"e5839836","latestUpdateBlock(address,address)":"da16e29b","middlewareTimesLength(address)":"a49db732","operatorToMiddlewareTimes(address,uint256)":"282670fc","operatorWhitelistedContractsLinkedListEntry(address,address)":"855fcc4a","operatorWhitelistedContractsLinkedListSize(address)":"e921d4fa","optIntoSlashing(address)":"f73b7519","recordFirstStakeUpdate(address,uint32)":"175d3205","recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":"0ffabbce","recordStakeUpdate(address,uint32,uint32,uint256)":"c747075b","resetFrozenStatus(address[])":"7cf72bba","strategyManager()":"39b70e38"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previouslySlashedAddress\",\"type\":\"address\"}],\"name\":\"FrozenStatusReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\"}],\"name\":\"MiddlewareTimesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slashedOperator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slashingContract\",\"type\":\"address\"}],\"name\":\"OperatorFrozen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"OptedIntoSlashing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"contractCanSlashOperatorUntilBlock\",\"type\":\"uint32\"}],\"name\":\"SlashingAbilityRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toBeSlashed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slashingContract\",\"type\":\"address\"}],\"name\":\"canSlash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"}],\"name\":\"canWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"}],\"name\":\"contractCanSlashOperatorUntilBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toBeFrozen\",\"type\":\"address\"}],\"name\":\"freezeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"updateBlock\",\"type\":\"uint32\"}],\"name\":\"getCorrectValueForInsertAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getMiddlewareTimesIndexServeUntilBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getMiddlewareTimesIndexStalestUpdateBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isFrozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"}],\"name\":\"latestUpdateBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"middlewareTimesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"arrayIndex\",\"type\":\"uint256\"}],\"name\":\"operatorToMiddlewareTimes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\"}],\"internalType\":\"struct ISlasher.MiddlewareTimes\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"node\",\"type\":\"address\"}],\"name\":\"operatorWhitelistedContractsLinkedListEntry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorWhitelistedContractsLinkedListSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"optIntoSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"}],\"name\":\"recordFirstStakeUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"}],\"name\":\"recordLastStakeUpdateAndRevokeSlashingAbility\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"updateBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"insertAfter\",\"type\":\"uint256\"}],\"name\":\"recordStakeUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"frozenAddresses\",\"type\":\"address[]\"}],\"name\":\"resetFrozenStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"OperatorFrozen(address,address)\":{\"details\":\"The `slashingContract` must have permission to slash the `slashedOperator`, i.e. `canSlash(slasherOperator, slashingContract)` must return 'true'.\"}},\"kind\":\"dev\",\"methods\":{\"canWithdraw(address,uint32,uint256)\":{\"details\":\"The correct `middlewareTimesIndex` input should be computable off-chain.\",\"params\":{\"middlewareTimesIndex\":\"Indicates an index in `operatorToMiddlewareTimes[operator]` to consult as proof of the `operator`'s ability to withdraw\",\"operator\":\"Either the operator who queued the withdrawal themselves, or if the withdrawing party is a staker who delegated to an operator, this address is the operator *who the staker was delegated to* at the time of the `withdrawalStartBlock`.\",\"withdrawalStartBlock\":\"The block number at which the withdrawal was initiated.\"}},\"freezeOperator(address)\":{\"details\":\"Technically the operator is 'frozen' (hence the name of this function), and then subject to slashing pending a decision by a human-in-the-loop.The operator must have previously given the caller (which should be a contract) the ability to slash them, through a call to `optIntoSlashing`.\",\"params\":{\"toBeFrozen\":\"The operator to be frozen.\"}},\"isFrozen(address)\":{\"params\":{\"staker\":\"The staker of interest.\"},\"returns\":{\"_0\":\"Returns 'true' if `staker` themselves has their status set to frozen, OR if the staker is delegated to an operator who has their status set to frozen. Otherwise returns 'false'.\"}},\"optIntoSlashing(address)\":{\"details\":\"Typically, this function must be called prior to registering for a middleware.\"},\"recordFirstStakeUpdate(address,uint32)\":{\"details\":\"adds the middleware's slashing contract to the operator's linked list\",\"params\":{\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at the current block is slashable\"}},\"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)\":{\"details\":\"removes the middleware's slashing contract to the operator's linked list and revokes the middleware's (i.e. caller's) ability to slash `operator` once `serveUntil` is reached\",\"params\":{\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at the current block is slashable\"}},\"recordStakeUpdate(address,uint32,uint32,uint256)\":{\"details\":\"insertAfter should be calculated offchain before making the transaction that calls this. this is subject to race conditions, but it is anticipated to be rare and not detrimental.\",\"params\":{\"insertAfter\":\"the element of the operators linked list that the currently updating middleware should be inserted after\",\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at updateBlock is slashable\",\"updateBlock\":\"the block for which the stake update is being recorded\"}},\"resetFrozenStatus(address[])\":{\"details\":\"Callable only by the contract owner (i.e. governance).\"}},\"title\":\"Interface for the primary 'slashing' contract for EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"FrozenStatusReset(address)\":{\"notice\":\"Emitted when `previouslySlashedAddress` is 'unfrozen', allowing them to again move deposited funds within EigenLayer.\"},\"MiddlewareTimesAdded(address,uint256,uint32,uint32)\":{\"notice\":\"Emitted when a middleware times is added to `operator`'s array.\"},\"OperatorFrozen(address,address)\":{\"notice\":\"Emitted when `slashingContract` 'freezes' the `slashedOperator`.\"},\"OptedIntoSlashing(address,address)\":{\"notice\":\"Emitted when `operator` begins to allow `contractAddress` to slash them.\"},\"SlashingAbilityRevoked(address,address,uint32)\":{\"notice\":\"Emitted when `contractAddress` signals that it will no longer be able to slash `operator` after the `contractCanSlashOperatorUntilBlock`.\"}},\"kind\":\"user\",\"methods\":{\"canSlash(address,address)\":{\"notice\":\"Returns true if `slashingContract` is currently allowed to slash `toBeSlashed`.\"},\"canWithdraw(address,uint32,uint256)\":{\"notice\":\"Returns 'true' if `operator` can currently complete a withdrawal started at the `withdrawalStartBlock`, with `middlewareTimesIndex` used to specify the index of a `MiddlewareTimes` struct in the operator's list (i.e. an index in `operatorToMiddlewareTimes[operator]`). The specified struct is consulted as proof of the `operator`'s ability (or lack thereof) to complete the withdrawal. This function will return 'false' if the operator cannot currently complete a withdrawal started at the `withdrawalStartBlock`, *or* in the event that an incorrect `middlewareTimesIndex` is supplied, even if one or more correct inputs exist.\"},\"contractCanSlashOperatorUntilBlock(address,address)\":{\"notice\":\"Returns the block until which `serviceContract` is allowed to slash the `operator`.\"},\"delegation()\":{\"notice\":\"The DelegationManager contract of EigenLayer\"},\"freezeOperator(address)\":{\"notice\":\"Used for 'slashing' a certain operator.\"},\"getCorrectValueForInsertAfter(address,uint32)\":{\"notice\":\"A search routine for finding the correct input value of `insertAfter` to `recordStakeUpdate` / `_updateMiddlewareList`.\"},\"getMiddlewareTimesIndexServeUntilBlock(address,uint32)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator][index].latestServeUntil`.\"},\"getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator][index].stalestUpdateBlock`.\"},\"isFrozen(address)\":{\"notice\":\"Used to determine whether `staker` is actively 'frozen'. If a staker is frozen, then they are potentially subject to slashing of their funds, and cannot cannot deposit or withdraw from the strategyManager until the slashing process is completed and the staker's status is reset (to 'unfrozen').\"},\"latestUpdateBlock(address,address)\":{\"notice\":\"Returns the block at which the `serviceContract` last updated its view of the `operator`'s stake\"},\"middlewareTimesLength(address)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator].length`\"},\"operatorToMiddlewareTimes(address,uint256)\":{\"notice\":\"operator => [ ( the least recent update block of all of the middlewares it's serving/served, latest time that the stake bonded at that update needed to serve until ) ]\"},\"operatorWhitelistedContractsLinkedListEntry(address,address)\":{\"notice\":\"Getter function for fetching a single node in the operator's linked list (`_operatorToWhitelistedContractsByUpdate[operator]`).\"},\"operatorWhitelistedContractsLinkedListSize(address)\":{\"notice\":\"Getter function for fetching `_operatorToWhitelistedContractsByUpdate[operator].size`.\"},\"optIntoSlashing(address)\":{\"notice\":\"Gives the `contractAddress` permission to slash the funds of the caller.\"},\"recordFirstStakeUpdate(address,uint32)\":{\"notice\":\"this function is a called by middlewares during an operator's registration to make sure the operator's stake at registration is slashable until serveUntil\"},\"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)\":{\"notice\":\"this function is a called by middlewares during an operator's deregistration to make sure the operator's stake at deregistration is slashable until serveUntil\"},\"recordStakeUpdate(address,uint32,uint32,uint256)\":{\"notice\":\"this function is a called by middlewares during a stake update for an operator (perhaps to free pending withdrawals) to make sure the operator's stake at updateBlock is slashable until serveUntil\"},\"resetFrozenStatus(address[])\":{\"notice\":\"Removes the 'frozen' status from each of the `frozenAddresses`\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract of EigenLayer\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceSee the `Slasher` contract itself for implementation details.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":\"ISlasher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"previouslySlashedAddress","type":"address","indexed":true}],"type":"event","name":"FrozenStatusReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint32","name":"stalestUpdateBlock","type":"uint32","indexed":false},{"internalType":"uint32","name":"latestServeUntilBlock","type":"uint32","indexed":false}],"type":"event","name":"MiddlewareTimesAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"slashedOperator","type":"address","indexed":true},{"internalType":"address","name":"slashingContract","type":"address","indexed":true}],"type":"event","name":"OperatorFrozen","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true}],"type":"event","name":"OptedIntoSlashing","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint32","name":"contractCanSlashOperatorUntilBlock","type":"uint32","indexed":false}],"type":"event","name":"SlashingAbilityRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"toBeSlashed","type":"address"},{"internalType":"address","name":"slashingContract","type":"address"}],"stateMutability":"view","type":"function","name":"canSlash","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"canWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"serviceContract","type":"address"}],"stateMutability":"view","type":"function","name":"contractCanSlashOperatorUntilBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"toBeFrozen","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"freezeOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"updateBlock","type":"uint32"}],"stateMutability":"view","type":"function","name":"getCorrectValueForInsertAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function","name":"getMiddlewareTimesIndexServeUntilBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function","name":"getMiddlewareTimesIndexStalestUpdateBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"serviceContract","type":"address"}],"stateMutability":"view","type":"function","name":"latestUpdateBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"middlewareTimesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"arrayIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorToMiddlewareTimes","outputs":[{"internalType":"struct ISlasher.MiddlewareTimes","name":"","type":"tuple","components":[{"internalType":"uint32","name":"stalestUpdateBlock","type":"uint32"},{"internalType":"uint32","name":"latestServeUntilBlock","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"node","type":"address"}],"stateMutability":"view","type":"function","name":"operatorWhitelistedContractsLinkedListEntry","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorWhitelistedContractsLinkedListSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIntoSlashing"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"recordFirstStakeUpdate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"recordLastStakeUpdateAndRevokeSlashingAbility"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"updateBlock","type":"uint32"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"},{"internalType":"uint256","name":"insertAfter","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"recordStakeUpdate"},{"inputs":[{"internalType":"address[]","name":"frozenAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"resetFrozenStatus"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"canWithdraw(address,uint32,uint256)":{"details":"The correct `middlewareTimesIndex` input should be computable off-chain.","params":{"middlewareTimesIndex":"Indicates an index in `operatorToMiddlewareTimes[operator]` to consult as proof of the `operator`'s ability to withdraw","operator":"Either the operator who queued the withdrawal themselves, or if the withdrawing party is a staker who delegated to an operator, this address is the operator *who the staker was delegated to* at the time of the `withdrawalStartBlock`.","withdrawalStartBlock":"The block number at which the withdrawal was initiated."}},"freezeOperator(address)":{"details":"Technically the operator is 'frozen' (hence the name of this function), and then subject to slashing pending a decision by a human-in-the-loop.The operator must have previously given the caller (which should be a contract) the ability to slash them, through a call to `optIntoSlashing`.","params":{"toBeFrozen":"The operator to be frozen."}},"isFrozen(address)":{"params":{"staker":"The staker of interest."},"returns":{"_0":"Returns 'true' if `staker` themselves has their status set to frozen, OR if the staker is delegated to an operator who has their status set to frozen. Otherwise returns 'false'."}},"optIntoSlashing(address)":{"details":"Typically, this function must be called prior to registering for a middleware."},"recordFirstStakeUpdate(address,uint32)":{"details":"adds the middleware's slashing contract to the operator's linked list","params":{"operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at the current block is slashable"}},"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":{"details":"removes the middleware's slashing contract to the operator's linked list and revokes the middleware's (i.e. caller's) ability to slash `operator` once `serveUntil` is reached","params":{"operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at the current block is slashable"}},"recordStakeUpdate(address,uint32,uint32,uint256)":{"details":"insertAfter should be calculated offchain before making the transaction that calls this. this is subject to race conditions, but it is anticipated to be rare and not detrimental.","params":{"insertAfter":"the element of the operators linked list that the currently updating middleware should be inserted after","operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at updateBlock is slashable","updateBlock":"the block for which the stake update is being recorded"}},"resetFrozenStatus(address[])":{"details":"Callable only by the contract owner (i.e. governance)."}},"version":1},"userdoc":{"kind":"user","methods":{"canSlash(address,address)":{"notice":"Returns true if `slashingContract` is currently allowed to slash `toBeSlashed`."},"canWithdraw(address,uint32,uint256)":{"notice":"Returns 'true' if `operator` can currently complete a withdrawal started at the `withdrawalStartBlock`, with `middlewareTimesIndex` used to specify the index of a `MiddlewareTimes` struct in the operator's list (i.e. an index in `operatorToMiddlewareTimes[operator]`). The specified struct is consulted as proof of the `operator`'s ability (or lack thereof) to complete the withdrawal. This function will return 'false' if the operator cannot currently complete a withdrawal started at the `withdrawalStartBlock`, *or* in the event that an incorrect `middlewareTimesIndex` is supplied, even if one or more correct inputs exist."},"contractCanSlashOperatorUntilBlock(address,address)":{"notice":"Returns the block until which `serviceContract` is allowed to slash the `operator`."},"delegation()":{"notice":"The DelegationManager contract of EigenLayer"},"freezeOperator(address)":{"notice":"Used for 'slashing' a certain operator."},"getCorrectValueForInsertAfter(address,uint32)":{"notice":"A search routine for finding the correct input value of `insertAfter` to `recordStakeUpdate` / `_updateMiddlewareList`."},"getMiddlewareTimesIndexServeUntilBlock(address,uint32)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator][index].latestServeUntil`."},"getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator][index].stalestUpdateBlock`."},"isFrozen(address)":{"notice":"Used to determine whether `staker` is actively 'frozen'. If a staker is frozen, then they are potentially subject to slashing of their funds, and cannot cannot deposit or withdraw from the strategyManager until the slashing process is completed and the staker's status is reset (to 'unfrozen')."},"latestUpdateBlock(address,address)":{"notice":"Returns the block at which the `serviceContract` last updated its view of the `operator`'s stake"},"middlewareTimesLength(address)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator].length`"},"operatorToMiddlewareTimes(address,uint256)":{"notice":"operator => [ ( the least recent update block of all of the middlewares it's serving/served, latest time that the stake bonded at that update needed to serve until ) ]"},"operatorWhitelistedContractsLinkedListEntry(address,address)":{"notice":"Getter function for fetching a single node in the operator's linked list (`_operatorToWhitelistedContractsByUpdate[operator]`)."},"operatorWhitelistedContractsLinkedListSize(address)":{"notice":"Getter function for fetching `_operatorToWhitelistedContractsByUpdate[operator].size`."},"optIntoSlashing(address)":{"notice":"Gives the `contractAddress` permission to slash the funds of the caller."},"recordFirstStakeUpdate(address,uint32)":{"notice":"this function is a called by middlewares during an operator's registration to make sure the operator's stake at registration is slashable until serveUntil"},"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":{"notice":"this function is a called by middlewares during an operator's deregistration to make sure the operator's stake at deregistration is slashable until serveUntil"},"recordStakeUpdate(address,uint32,uint32,uint256)":{"notice":"this function is a called by middlewares during a stake update for an operator (perhaps to free pending withdrawals) to make sure the operator's stake at updateBlock is slashable until serveUntil"},"resetFrozenStatus(address[])":{"notice":"Removes the 'frozen' status from each of the `frozenAddresses`"},"strategyManager()":{"notice":"The StrategyManager contract of EigenLayer"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/ISlasher.sol":"ISlasher"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":110} \ No newline at end of file diff --git a/out/IStakeRegistry.sol/IStakeRegistry.json b/out/IStakeRegistry.sol/IStakeRegistry.json new file mode 100644 index 00000000..66df0c2c --- /dev/null +++ b/out/IStakeRegistry.sol/IStakeRegistry.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"strategyParamsByIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StrategyParams","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"strategyParamsByIndex(uint8,uint256)":"adc804da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"strategyParamsByIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for a `Registry` that keeps track of stakes of operators for up to 256 quorums.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"strategyParamsByIndex(uint8,uint256)\":{\"notice\":\"Returns the strategy and weight multiplier for the `index`'th strategy in the quorum `quorumNumber`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IStakeRegistry.sol\":\"IStakeRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategyParamsByIndex","outputs":[{"internalType":"struct IStakeRegistry.StrategyParams","name":"","type":"tuple","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"strategyParamsByIndex(uint8,uint256)":{"notice":"Returns the strategy and weight multiplier for the `index`'th strategy in the quorum `quorumNumber`"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IStakeRegistry.sol":"IStakeRegistry"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"}},"version":1},"id":78} \ No newline at end of file diff --git a/out/IStrategy.sol/IStrategy.json b/out/IStrategy.sol/IStrategy.json new file mode 100644 index 00000000..8a222d24 --- /dev/null +++ b/out/IStrategy.sol/IStrategy.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"deposit","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"explanation","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"shares","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sharesToUnderlying","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"sharesToUnderlyingView","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToShares","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"underlyingToSharesView","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"userUnderlying","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"userUnderlyingView","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deposit(address,uint256)":"47e7ef24","explanation()":"ab5921e1","shares(address)":"ce7c2ac2","sharesToUnderlying(uint256)":"f3e73875","sharesToUnderlyingView(uint256)":"7a8b2637","totalShares()":"3a98ef39","underlyingToShares(uint256)":"8c871019","underlyingToSharesView(uint256)":"e3dae51c","underlyingToken()":"2495a599","userUnderlying(address)":"8f6a6240","userUnderlyingView(address)":"553ca5f8","withdraw(address,address,uint256)":"d9caed12"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"explanation\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"shares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToSharesView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.\",\"params\":{\"amount\":\"is the amount of token being deposited\",\"token\":\"is the ERC20 token being deposited\"},\"returns\":{\"_0\":\"newShares is the number of new shares issued at the current exchange ratio.\"}},\"sharesToUnderlying(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"sharesToUnderlyingView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"underlyingToShares(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"underlyingToSharesView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"withdraw(address,address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.\",\"params\":{\"amountShares\":\"is the amount of shares being withdrawn\",\"recipient\":\"is the address to receive the withdrawn funds\",\"token\":\"is the ERC20 token being transferred out\"}}},\"title\":\"Minimal interface for an `Strategy` contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(address,uint256)\":{\"notice\":\"Used to deposit tokens into this Strategy\"},\"explanation()\":{\"notice\":\"Returns either a brief string explaining the strategy's goal & purpose, or a link to metadata that explains in more detail.\"},\"shares(address)\":{\"notice\":\"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract\"},\"sharesToUnderlying(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications\"},\"sharesToUnderlyingView(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications\"},\"totalShares()\":{\"notice\":\"The total number of extant shares in this Strategy\"},\"underlyingToShares(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications\"},\"underlyingToSharesView(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications\"},\"underlyingToken()\":{\"notice\":\"The underlying token for shares in this Strategy\"},\"userUnderlying(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications\"},\"userUnderlyingView(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to withdraw tokens from this Strategy, to the `recipient`'s address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceCustom `Strategy` implementations may expand extensively on this interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":\"IStrategy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"explanation","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sharesToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"underlyingToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"view","type":"function","name":"underlyingToSharesView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"underlyingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"userUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"userUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"deposit(address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.","params":{"amount":"is the amount of token being deposited","token":"is the ERC20 token being deposited"},"returns":{"_0":"newShares is the number of new shares issued at the current exchange ratio."}},"sharesToUnderlying(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"sharesToUnderlyingView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"underlyingToShares(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"underlyingToSharesView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"withdraw(address,address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.","params":{"amountShares":"is the amount of shares being withdrawn","recipient":"is the address to receive the withdrawn funds","token":"is the ERC20 token being transferred out"}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(address,uint256)":{"notice":"Used to deposit tokens into this Strategy"},"explanation()":{"notice":"Returns either a brief string explaining the strategy's goal & purpose, or a link to metadata that explains in more detail."},"shares(address)":{"notice":"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract"},"sharesToUnderlying(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications"},"sharesToUnderlyingView(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications"},"totalShares()":{"notice":"The total number of extant shares in this Strategy"},"underlyingToShares(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications"},"underlyingToSharesView(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications"},"underlyingToken()":{"notice":"The underlying token for shares in this Strategy"},"userUnderlying(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications"},"userUnderlyingView(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications"},"withdraw(address,address,uint256)":{"notice":"Used to withdraw tokens from this Strategy, to the `recipient`'s address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IStrategy.sol":"IStrategy"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"}},"version":1},"id":111} \ No newline at end of file diff --git a/out/IStrategyManager.sol/IStrategyManager.json b/out/IStrategyManager.sol/IStrategyManager.json new file mode 100644 index 00000000..b12de5f6 --- /dev/null +++ b/out/IStrategyManager.sol/IStrategyManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStrategiesToDepositWhitelist","inputs":[{"name":"strategiesToWhitelist","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"queuedWithdrawal","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"depositIntoStrategy","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositIntoStrategyWithSignature","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"staker","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"getDeposits","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawal","inputs":[{"name":"queuedWithdrawal","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeStrategiesFromDepositWhitelist","inputs":[{"name":"strategiesToRemoveFromWhitelist","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyListLength","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyShares","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyWhitelister","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"withdrawSharesAsTokens","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Deposit","inputs":[{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"contract IERC20"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StrategyAddedToDepositWhitelist","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyRemovedFromDepositWhitelist","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyWhitelisterChanged","inputs":[{"name":"previousAddress","type":"address","indexed":false,"internalType":"address"},{"name":"newAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addShares(address,address,uint256)":"50ff7225","addStrategiesToDepositWhitelist(address[])":"5de08ff2","calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address))":"b43b514b","delegation()":"df5cf723","depositIntoStrategy(address,address,uint256)":"e7a050aa","depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":"32e89ace","eigenPodManager()":"4665bcda","getDeposits(address)":"94f649dd","migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))":"cd293f6f","removeShares(address,address,uint256)":"8c80d4e5","removeStrategiesFromDepositWhitelist(address[])":"b5d8b5b8","slasher()":"b1344271","stakerStrategyListLength(address)":"8b8aac3c","stakerStrategyShares(address,address)":"7a7e0d92","strategyWhitelister()":"967fc0d2","withdrawSharesAsTokens(address,address,uint256,address)":"c608c7f3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAddedToDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemovedFromDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"StrategyWhitelisterChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"addShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\"}],\"name\":\"addStrategiesToDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"name\":\"queuedWithdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositIntoStrategy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"depositIntoStrategyWithSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDeposits\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"name\":\"queuedWithdrawal\",\"type\":\"tuple\"}],\"name\":\"migrateQueuedWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"removeShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\"}],\"name\":\"removeStrategiesFromDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerStrategyListLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"stakerStrategyShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyWhitelister\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawSharesAsTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"Deposit(address,address,address,uint256)\":{\"params\":{\"shares\":\"Is the number of new shares `staker` has been granted in `strategy`.\",\"staker\":\"Is the staker who is depositing funds into EigenLayer.\",\"strategy\":\"Is the strategy that `staker` has deposited into.\",\"token\":\"Is the token that `staker` deposited.\"}}},\"kind\":\"dev\",\"methods\":{\"addStrategiesToDepositWhitelist(address[])\":{\"params\":{\"strategiesToWhitelist\":\"Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)\"}},\"depositIntoStrategy(address,address,uint256)\":{\"details\":\"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.Cannot be called by an address that is 'frozen' (this function will revert if the `msg.sender` is frozen). WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy.\",\"params\":{\"amount\":\"is the amount of token to be deposited in the strategy by the staker\",\"strategy\":\"is the specified strategy where deposit is to be made,\",\"token\":\"is the denomination in which the deposit is to be made,\"},\"returns\":{\"shares\":\"The amount of new shares in the `strategy` created as part of the action.\"}},\"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)\":{\"details\":\"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.A signature is required for this function to eliminate the possibility of griefing attacks, specifically those targeting stakers who may be attempting to undelegate.Cannot be called on behalf of a staker that is 'frozen' (this function will revert if the `staker` is frozen). WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy\",\"params\":{\"amount\":\"is the amount of token to be deposited in the strategy by the staker\",\"expiry\":\"the timestamp at which the signature expires\",\"signature\":\"is a valid signature from the `staker`. either an ECDSA signature if the `staker` is an EOA, or data to forward following EIP-1271 if the `staker` is a contract\",\"staker\":\"the staker that the deposited assets will be credited to\",\"strategy\":\"is the specified strategy where deposit is to be made,\",\"token\":\"is the denomination in which the deposit is to be made,\"},\"returns\":{\"shares\":\"The amount of new shares in the `strategy` created as part of the action.\"}},\"getDeposits(address)\":{\"returns\":{\"_0\":\"(staker's strategies, shares in these strategies)\"}},\"removeStrategiesFromDepositWhitelist(address[])\":{\"params\":{\"strategiesToRemoveFromWhitelist\":\"Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)\"}}},\"title\":\"Interface for the primary entrypoint for funds into EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"Deposit(address,address,address,uint256)\":{\"notice\":\"Emitted when a new deposit occurs on behalf of `staker`.\"},\"StrategyAddedToDepositWhitelist(address)\":{\"notice\":\"Emitted when a strategy is added to the approved list of strategies for deposit\"},\"StrategyRemovedFromDepositWhitelist(address)\":{\"notice\":\"Emitted when a strategy is removed from the approved list of strategies for deposit\"},\"StrategyWhitelisterChanged(address,address)\":{\"notice\":\"Emitted when the `strategyWhitelister` is changed\"}},\"kind\":\"user\",\"methods\":{\"addShares(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue\"},\"addStrategiesToDepositWhitelist(address[])\":{\"notice\":\"Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into\"},\"delegation()\":{\"notice\":\"Returns the single, central Delegation contract of EigenLayer\"},\"depositIntoStrategy(address,address,uint256)\":{\"notice\":\"Deposits `amount` of `token` into the specified `strategy`, with the resultant shares credited to `msg.sender`\"},\"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)\":{\"notice\":\"Used for depositing an asset into the specified strategy with the resultant shares credited to `staker`, who must sign off on the action. Note that the assets are transferred out/from the `msg.sender`, not from the `staker`; this function is explicitly designed purely to help one address deposit 'for' another.\"},\"eigenPodManager()\":{\"notice\":\"Returns the EigenPodManager contract of EigenLayer\"},\"getDeposits(address)\":{\"notice\":\"Get all details on the staker's deposits and corresponding shares\"},\"removeShares(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue\"},\"removeStrategiesFromDepositWhitelist(address[])\":{\"notice\":\"Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into\"},\"slasher()\":{\"notice\":\"Returns the single, central Slasher contract of EigenLayer\"},\"stakerStrategyListLength(address)\":{\"notice\":\"Simple getter function that returns `stakerStrategyList[staker].length`.\"},\"stakerStrategyShares(address,address)\":{\"notice\":\"Returns the current shares of `user` in `strategy`\"},\"strategyWhitelister()\":{\"notice\":\"Returns the address of the `strategyWhitelister`\"},\"withdrawSharesAsTokens(address,address,uint256,address)\":{\"notice\":\"Used by the DelegationManager to convert withdrawn shares to tokens and send them to a recipient\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceSee the `StrategyManager` contract itself for implementation details.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":\"IStrategyManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IERC20","name":"token","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyAddedToDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyRemovedFromDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousAddress","type":"address","indexed":false},{"internalType":"address","name":"newAddress","type":"address","indexed":false}],"type":"event","name":"StrategyWhitelisterChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addShares"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategiesToWhitelist","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"addStrategiesToDepositWhitelist"},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","name":"queuedWithdrawal","type":"tuple","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositIntoStrategy","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"depositIntoStrategyWithSignature","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposits","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","name":"queuedWithdrawal","type":"tuple","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeShares"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategiesToRemoveFromWhitelist","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategiesFromDepositWhitelist"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"stakerStrategyListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"}],"stateMutability":"view","type":"function","name":"stakerStrategyShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyWhitelister","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawSharesAsTokens"}],"devdoc":{"kind":"dev","methods":{"addStrategiesToDepositWhitelist(address[])":{"params":{"strategiesToWhitelist":"Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)"}},"depositIntoStrategy(address,address,uint256)":{"details":"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.Cannot be called by an address that is 'frozen' (this function will revert if the `msg.sender` is frozen). WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy.","params":{"amount":"is the amount of token to be deposited in the strategy by the staker","strategy":"is the specified strategy where deposit is to be made,","token":"is the denomination in which the deposit is to be made,"},"returns":{"shares":"The amount of new shares in the `strategy` created as part of the action."}},"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":{"details":"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.A signature is required for this function to eliminate the possibility of griefing attacks, specifically those targeting stakers who may be attempting to undelegate.Cannot be called on behalf of a staker that is 'frozen' (this function will revert if the `staker` is frozen). WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy","params":{"amount":"is the amount of token to be deposited in the strategy by the staker","expiry":"the timestamp at which the signature expires","signature":"is a valid signature from the `staker`. either an ECDSA signature if the `staker` is an EOA, or data to forward following EIP-1271 if the `staker` is a contract","staker":"the staker that the deposited assets will be credited to","strategy":"is the specified strategy where deposit is to be made,","token":"is the denomination in which the deposit is to be made,"},"returns":{"shares":"The amount of new shares in the `strategy` created as part of the action."}},"getDeposits(address)":{"returns":{"_0":"(staker's strategies, shares in these strategies)"}},"removeStrategiesFromDepositWhitelist(address[])":{"params":{"strategiesToRemoveFromWhitelist":"Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addShares(address,address,uint256)":{"notice":"Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue"},"addStrategiesToDepositWhitelist(address[])":{"notice":"Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into"},"delegation()":{"notice":"Returns the single, central Delegation contract of EigenLayer"},"depositIntoStrategy(address,address,uint256)":{"notice":"Deposits `amount` of `token` into the specified `strategy`, with the resultant shares credited to `msg.sender`"},"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":{"notice":"Used for depositing an asset into the specified strategy with the resultant shares credited to `staker`, who must sign off on the action. Note that the assets are transferred out/from the `msg.sender`, not from the `staker`; this function is explicitly designed purely to help one address deposit 'for' another."},"eigenPodManager()":{"notice":"Returns the EigenPodManager contract of EigenLayer"},"getDeposits(address)":{"notice":"Get all details on the staker's deposits and corresponding shares"},"removeShares(address,address,uint256)":{"notice":"Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue"},"removeStrategiesFromDepositWhitelist(address[])":{"notice":"Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into"},"slasher()":{"notice":"Returns the single, central Slasher contract of EigenLayer"},"stakerStrategyListLength(address)":{"notice":"Simple getter function that returns `stakerStrategyList[staker].length`."},"stakerStrategyShares(address,address)":{"notice":"Returns the current shares of `user` in `strategy`"},"strategyWhitelister()":{"notice":"Returns the address of the `strategyWhitelister`"},"withdrawSharesAsTokens(address,address,uint256,address)":{"notice":"Used by the DelegationManager to convert withdrawn shares to tokens and send them to a recipient"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":"IStrategyManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":112} \ No newline at end of file diff --git a/out/IUniswapV3Pool.sol/IUniswapV3Pool.json b/out/IUniswapV3Pool.sol/IUniswapV3Pool.json new file mode 100644 index 00000000..449295d4 --- /dev/null +++ b/out/IUniswapV3Pool.sol/IUniswapV3Pool.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"burn","inputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collect","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"amount0Requested","type":"uint128","internalType":"uint128"},{"name":"amount1Requested","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"amount0","type":"uint128","internalType":"uint128"},{"name":"amount1","type":"uint128","internalType":"uint128"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocol","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount0Requested","type":"uint128","internalType":"uint128"},{"name":"amount1Requested","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"amount0","type":"uint128","internalType":"uint128"},{"name":"amount1","type":"uint128","internalType":"uint128"}],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"feeGrowthGlobal0X128","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"feeGrowthGlobal1X128","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flash","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"increaseObservationCardinalityNext","inputs":[{"name":"observationCardinalityNext","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"liquidity","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"maxLiquidityPerTick","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"observations","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockTimestamp","type":"uint32","internalType":"uint32"},{"name":"tickCumulative","type":"int56","internalType":"int56"},{"name":"secondsPerLiquidityCumulativeX128","type":"uint160","internalType":"uint160"},{"name":"initialized","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"observe","inputs":[{"name":"secondsAgos","type":"uint32[]","internalType":"uint32[]"}],"outputs":[{"name":"tickCumulatives","type":"int56[]","internalType":"int56[]"},{"name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]","internalType":"uint160[]"}],"stateMutability":"view"},{"type":"function","name":"positions","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"feeGrowthInside0LastX128","type":"uint256","internalType":"uint256"},{"name":"feeGrowthInside1LastX128","type":"uint256","internalType":"uint256"},{"name":"tokensOwed0","type":"uint128","internalType":"uint128"},{"name":"tokensOwed1","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"protocolFees","inputs":[],"outputs":[{"name":"token0","type":"uint128","internalType":"uint128"},{"name":"token1","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"setFeeProtocol","inputs":[{"name":"feeProtocol0","type":"uint8","internalType":"uint8"},{"name":"feeProtocol1","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slot0","inputs":[],"outputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"},{"name":"observationIndex","type":"uint16","internalType":"uint16"},{"name":"observationCardinality","type":"uint16","internalType":"uint16"},{"name":"observationCardinalityNext","type":"uint16","internalType":"uint16"},{"name":"feeProtocol","type":"uint8","internalType":"uint8"},{"name":"unlocked","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"snapshotCumulativesInside","inputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}],"outputs":[{"name":"tickCumulativeInside","type":"int56","internalType":"int56"},{"name":"secondsPerLiquidityInsideX128","type":"uint160","internalType":"uint160"},{"name":"secondsInside","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount0","type":"int256","internalType":"int256"},{"name":"amount1","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"tickBitmap","inputs":[{"name":"wordPosition","type":"int16","internalType":"int16"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tickSpacing","inputs":[],"outputs":[{"name":"","type":"int24","internalType":"int24"}],"stateMutability":"view"},{"type":"function","name":"ticks","inputs":[{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"liquidityGross","type":"uint128","internalType":"uint128"},{"name":"liquidityNet","type":"int128","internalType":"int128"},{"name":"feeGrowthOutside0X128","type":"uint256","internalType":"uint256"},{"name":"feeGrowthOutside1X128","type":"uint256","internalType":"uint256"},{"name":"tickCumulativeOutside","type":"int56","internalType":"int56"},{"name":"secondsPerLiquidityOutsideX128","type":"uint160","internalType":"uint160"},{"name":"secondsOutside","type":"uint32","internalType":"uint32"},{"name":"initialized","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Burn","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":true,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":true,"internalType":"int24"},{"name":"amount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Collect","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":true,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":true,"internalType":"int24"},{"name":"amount0","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount1","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"CollectProtocol","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount1","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"paid0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"paid1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"IncreaseObservationCardinalityNext","inputs":[{"name":"observationCardinalityNextOld","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"observationCardinalityNextNew","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"Initialize","inputs":[{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":true,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":true,"internalType":"int24"},{"name":"amount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetFeeProtocol","inputs":[{"name":"feeProtocol0Old","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"feeProtocol1Old","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"feeProtocol0New","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"feeProtocol1New","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int256","indexed":false,"internalType":"int256"},{"name":"amount1","type":"int256","indexed":false,"internalType":"int256"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"error","name":"AI","inputs":[]},{"type":"error","name":"AS","inputs":[]},{"type":"error","name":"F0","inputs":[]},{"type":"error","name":"F1","inputs":[]},{"type":"error","name":"IIA","inputs":[]},{"type":"error","name":"L","inputs":[]},{"type":"error","name":"LOK","inputs":[]},{"type":"error","name":"M0","inputs":[]},{"type":"error","name":"M1","inputs":[]},{"type":"error","name":"TLM","inputs":[]},{"type":"error","name":"TLU","inputs":[]},{"type":"error","name":"TUM","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","collectProtocol(address,uint128,uint128)":"85b66729","factory()":"c45a0155","fee()":"ddca3f43","feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","liquidity()":"1a686502","maxLiquidityPerTick()":"70cf754a","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","observations(uint256)":"252c09d7","observe(uint32[])":"883bdbfd","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","setFeeProtocol(uint8,uint8)":"8206a4d1","slot0()":"3850c7bd","snapshotCumulativesInside(int24,int24)":"a38807f2","swap(address,bool,int256,uint160,bytes)":"128acb08","tickBitmap(int16)":"5339c296","tickSpacing()":"d0c93a7c","ticks(int24)":"f30dba93","token0()":"0dfe1681","token1()":"d21220a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AI\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"F0\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"F1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IIA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LOK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"M0\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"M1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TLM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TLU\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TUM\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The pool interface is broken up into many smaller pieces\",\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\",\"returns\":{\"_0\":\"The liquidity at the current price of the pool\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation,\",\"initialized\":\"whether the observation has been initialized and the values are safe to use\",\"secondsPerLiquidityCumulativeX128\":\"the seconds per in range liquidity for the life of the pool as of the observation timestamp,\",\"tickCumulative\":\"the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\"}},\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"feeGrowthInside0LastX128\":\"fee growth of token0 inside the tick range as of the last mint/burn/poke,\",\"feeGrowthInside1LastX128\":\"fee growth of token1 inside the tick range as of the last mint/burn/poke,\",\"liquidity\":\"The amount of liquidity in the position,\",\"tokensOwed0\":\"the computed amount of token0 owed to the position as of the last mint/burn/poke,\",\"tokensOwed1\":\"the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}},\"slot0()\":{\"returns\":{\"feeProtocol\":\"The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\",\"observationCardinality\":\"The current maximum number of observations stored in the pool,\",\"observationCardinalityNext\":\"The next maximum number of observations, to be updated when the observation.\",\"observationIndex\":\"The index of the last oracle observation that was written,\",\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value\",\"tick\":\"The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary.\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"feeGrowthOutside0X128\":\"the fee growth on the other side of the tick from the current tick in token0,\",\"feeGrowthOutside1X128\":\"the fee growth on the other side of the tick from the current tick in token1,\",\"initialized\":\"Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\",\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper\",\"liquidityNet\":\"how much liquidity changes when the pool price crosses the tick,\",\"secondsOutside\":\"the seconds spent on the other side of the tick from the current tick,\",\"secondsPerLiquidityOutsideX128\":\"the seconds spent per liquidity on the other side of the tick from the current tick,\",\"tickCumulativeOutside\":\"the cumulative tick value on the other side of the tick from the current tick\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"The interface for a Uniswap V3 Pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform to the ERC20 specification\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":\"IUniswapV3Pool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AI"},{"inputs":[],"type":"error","name":"AS"},{"inputs":[],"type":"error","name":"F0"},{"inputs":[],"type":"error","name":"F1"},{"inputs":[],"type":"error","name":"IIA"},{"inputs":[],"type":"error","name":"L"},{"inputs":[],"type":"error","name":"LOK"},{"inputs":[],"type":"error","name":"M0"},{"inputs":[],"type":"error","name":"M1"},{"inputs":[],"type":"error","name":"TLM"},{"inputs":[],"type":"error","name":"TLU"},{"inputs":[],"type":"error","name":"TUM"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":true},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":true},{"internalType":"uint128","name":"amount","type":"uint128","indexed":false},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"int24","name":"tickLower","type":"int24","indexed":true},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":true},{"internalType":"uint128","name":"amount0","type":"uint128","indexed":false},{"internalType":"uint128","name":"amount1","type":"uint128","indexed":false}],"type":"event","name":"Collect","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint128","name":"amount0","type":"uint128","indexed":false},{"internalType":"uint128","name":"amount1","type":"uint128","indexed":false}],"type":"event","name":"CollectProtocol","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false},{"internalType":"uint256","name":"paid0","type":"uint256","indexed":false},{"internalType":"uint256","name":"paid1","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16","indexed":false},{"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16","indexed":false}],"type":"event","name":"IncreaseObservationCardinalityNext","anonymous":false},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Initialize","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":true},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":true},{"internalType":"uint128","name":"amount","type":"uint128","indexed":false},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"uint8","name":"feeProtocol0Old","type":"uint8","indexed":false},{"internalType":"uint8","name":"feeProtocol1Old","type":"uint8","indexed":false},{"internalType":"uint8","name":"feeProtocol0New","type":"uint8","indexed":false},{"internalType":"uint8","name":"feeProtocol1New","type":"uint8","indexed":false}],"type":"event","name":"SetFeeProtocol","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"int256","name":"amount0","type":"int256","indexed":false},{"internalType":"int256","name":"amount1","type":"int256","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flash"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"increaseObservationCardinalityNext"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}]},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"stateMutability":"view","type":"function","name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}]},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"stateMutability":"view","type":"function","name":"positions","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}]},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setFeeProtocol"},{"inputs":[],"stateMutability":"view","type":"function","name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}]},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"stateMutability":"view","type":"function","name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}]},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"stateMutability":"view","type":"function","name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}]},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function","name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"burn(int24,int24,uint128)":{"details":"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect","params":{"amount":"How much liquidity to burn","tickLower":"The lower tick of the position for which to burn liquidity","tickUpper":"The upper tick of the position for which to burn liquidity"},"returns":{"amount0":"The amount of token0 sent to the recipient","amount1":"The amount of token1 sent to the recipient"}},"collect(address,int24,int24,uint128,uint128)":{"details":"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.","params":{"amount0Requested":"How much token0 should be withdrawn from the fees owed","amount1Requested":"How much token1 should be withdrawn from the fees owed","recipient":"The address which should receive the fees collected","tickLower":"The lower tick of the position for which to collect fees","tickUpper":"The upper tick of the position for which to collect fees"},"returns":{"amount0":"The amount of fees collected in token0","amount1":"The amount of fees collected in token1"}},"collectProtocol(address,uint128,uint128)":{"params":{"amount0Requested":"The maximum amount of token0 to send, can be 0 to collect fees in only token1","amount1Requested":"The maximum amount of token1 to send, can be 0 to collect fees in only token0","recipient":"The address to which collected protocol fees should be sent"},"returns":{"amount0":"The protocol fee collected in token0","amount1":"The protocol fee collected in token1"}},"factory()":{"returns":{"_0":"The contract address"}},"fee()":{"returns":{"_0":"The fee"}},"feeGrowthGlobal0X128()":{"details":"This value can overflow the uint256"},"feeGrowthGlobal1X128()":{"details":"This value can overflow the uint256"},"flash(address,uint256,uint256,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback","params":{"amount0":"The amount of token0 to send","amount1":"The amount of token1 to send","data":"Any data to be passed through to the callback","recipient":"The address which will receive the token0 and token1 amounts"}},"increaseObservationCardinalityNext(uint16)":{"details":"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.","params":{"observationCardinalityNext":"The desired minimum number of observations for the pool to store"}},"initialize(uint160)":{"details":"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value","params":{"sqrtPriceX96":"the initial sqrt price of the pool as a Q64.96"}},"liquidity()":{"details":"This value has no relationship to the total liquidity across all ticks","returns":{"_0":"The liquidity at the current price of the pool"}},"maxLiquidityPerTick()":{"details":"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool","returns":{"_0":"The max amount of liquidity per tick"}},"mint(address,int24,int24,uint128,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.","params":{"amount":"The amount of liquidity to mint","data":"Any data that should be passed through to the callback","recipient":"The address for which the liquidity will be created","tickLower":"The lower tick of the position in which to add liquidity","tickUpper":"The upper tick of the position in which to add liquidity"},"returns":{"amount0":"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback","amount1":"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"}},"observations(uint256)":{"details":"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.","params":{"index":"The element of the observations array to fetch"},"returns":{"blockTimestamp":"The timestamp of the observation,","initialized":"whether the observation has been initialized and the values are safe to use","secondsPerLiquidityCumulativeX128":"the seconds per in range liquidity for the life of the pool as of the observation timestamp,","tickCumulative":"the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,"}},"observe(uint32[])":{"details":"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.","params":{"secondsAgos":"From how long ago each cumulative tick and liquidity value should be returned"},"returns":{"secondsPerLiquidityCumulativeX128s":"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp","tickCumulatives":"Cumulative tick values as of each `secondsAgos` from the current block timestamp"}},"positions(bytes32)":{"params":{"key":"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper"},"returns":{"feeGrowthInside0LastX128":"fee growth of token0 inside the tick range as of the last mint/burn/poke,","feeGrowthInside1LastX128":"fee growth of token1 inside the tick range as of the last mint/burn/poke,","liquidity":"The amount of liquidity in the position,","tokensOwed0":"the computed amount of token0 owed to the position as of the last mint/burn/poke,","tokensOwed1":"the computed amount of token1 owed to the position as of the last mint/burn/poke"}},"protocolFees()":{"details":"Protocol fees will never exceed uint128 max in either token"},"setFeeProtocol(uint8,uint8)":{"params":{"feeProtocol0":"new protocol fee for token0 of the pool","feeProtocol1":"new protocol fee for token1 of the pool"}},"slot0()":{"returns":{"feeProtocol":"The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy","observationCardinality":"The current maximum number of observations stored in the pool,","observationCardinalityNext":"The next maximum number of observations, to be updated when the observation.","observationIndex":"The index of the last oracle observation that was written,","sqrtPriceX96":"The current price of the pool as a sqrt(token1/token0) Q64.96 value","tick":"The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary."}},"snapshotCumulativesInside(int24,int24)":{"details":"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.","params":{"tickLower":"The lower tick of the range","tickUpper":"The upper tick of the range"},"returns":{"secondsInside":"The snapshot of seconds per liquidity for the range","secondsPerLiquidityInsideX128":"The snapshot of seconds per liquidity for the range","tickCumulativeInside":"The snapshot of the tick accumulator for the range"}},"swap(address,bool,int256,uint160,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback","params":{"amountSpecified":"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)","data":"Any data to be passed through to the callback","recipient":"The address to receive the output of the swap","sqrtPriceLimitX96":"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap","zeroForOne":"The direction of the swap, true for token0 to token1, false for token1 to token0"},"returns":{"amount0":"The delta of the balance of token0 of the pool, exact when negative, minimum when positive","amount1":"The delta of the balance of token1 of the pool, exact when negative, minimum when positive"}},"tickSpacing()":{"details":"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.","returns":{"_0":"The tick spacing"}},"ticks(int24)":{"params":{"tick":"The tick to look up"},"returns":{"feeGrowthOutside0X128":"the fee growth on the other side of the tick from the current tick in token0,","feeGrowthOutside1X128":"the fee growth on the other side of the tick from the current tick in token1,","initialized":"Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.","liquidityGross":"the total amount of position liquidity that uses the pool either as tick lower or tick upper","liquidityNet":"how much liquidity changes when the pool price crosses the tick,","secondsOutside":"the seconds spent on the other side of the tick from the current tick,","secondsPerLiquidityOutsideX128":"the seconds spent per liquidity on the other side of the tick from the current tick,","tickCumulativeOutside":"the cumulative tick value on the other side of the tick from the current tick"}},"token0()":{"returns":{"_0":"The token contract address"}},"token1()":{"returns":{"_0":"The token contract address"}}},"version":1},"userdoc":{"kind":"user","methods":{"burn(int24,int24,uint128)":{"notice":"Burn liquidity from the sender and account tokens owed for the liquidity to the position"},"collect(address,int24,int24,uint128,uint128)":{"notice":"Collects tokens owed to a position"},"collectProtocol(address,uint128,uint128)":{"notice":"Collect the protocol fee accrued to the pool"},"factory()":{"notice":"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface"},"fee()":{"notice":"The pool's fee in hundredths of a bip, i.e. 1e-6"},"feeGrowthGlobal0X128()":{"notice":"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool"},"feeGrowthGlobal1X128()":{"notice":"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool"},"flash(address,uint256,uint256,bytes)":{"notice":"Receive token0 and/or token1 and pay it back, plus a fee, in the callback"},"increaseObservationCardinalityNext(uint16)":{"notice":"Increase the maximum number of price and liquidity observations that this pool will store"},"initialize(uint160)":{"notice":"Sets the initial price for the pool"},"liquidity()":{"notice":"The currently in range liquidity available to the pool"},"maxLiquidityPerTick()":{"notice":"The maximum amount of position liquidity that can use any tick in the range"},"mint(address,int24,int24,uint128,bytes)":{"notice":"Adds liquidity for the given recipient/tickLower/tickUpper position"},"observations(uint256)":{"notice":"Returns data about a specific observation index"},"observe(uint32[])":{"notice":"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp"},"positions(bytes32)":{"notice":"Returns the information about a position by the position's key"},"protocolFees()":{"notice":"The amounts of token0 and token1 that are owed to the protocol"},"setFeeProtocol(uint8,uint8)":{"notice":"Set the denominator of the protocol's % share of the fees"},"slot0()":{"notice":"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally."},"snapshotCumulativesInside(int24,int24)":{"notice":"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range"},"swap(address,bool,int256,uint160,bytes)":{"notice":"Swap token0 for token1, or token1 for token0"},"tickBitmap(int16)":{"notice":"Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"tickSpacing()":{"notice":"The pool tick spacing"},"ticks(int24)":{"notice":"Look up information about a specific tick in the pool"},"token0()":{"notice":"The first of the two tokens of the pool, sorted by address"},"token1()":{"notice":"The second of the two tokens of the pool, sorted by address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":"IUniswapV3Pool"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968","urls":["bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e","dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"keccak256":"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b","urls":["bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa","dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43","urls":["bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea","dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp"],"license":"GPL-2.0-or-later"}},"version":1},"id":58} \ No newline at end of file diff --git a/out/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json b/out/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json new file mode 100644 index 00000000..e440b7df --- /dev/null +++ b/out/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"burn","inputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collect","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"amount0Requested","type":"uint128","internalType":"uint128"},{"name":"amount1Requested","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"amount0","type":"uint128","internalType":"uint128"},{"name":"amount1","type":"uint128","internalType":"uint128"}],"stateMutability":"nonpayable"},{"type":"function","name":"flash","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"increaseObservationCardinalityNext","inputs":[{"name":"observationCardinalityNext","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount0","type":"int256","internalType":"int256"},{"name":"amount1","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"burn(int24,int24,uint128)":"a34123a7","collect(address,int24,int24,uint128,uint128)":"4f1eb3d8","flash(address,uint256,uint256,bytes)":"490e6cbc","increaseObservationCardinalityNext(uint16)":"32148f67","initialize(uint160)":"f637731d","mint(address,int24,int24,uint128,bytes)":"3c8a7d8d","swap(address,bool,int256,uint160,bytes)":"128acb08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"}],\"name\":\"increaseObservationCardinalityNext\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(int24,int24,uint128)\":{\"details\":\"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect\",\"params\":{\"amount\":\"How much liquidity to burn\",\"tickLower\":\"The lower tick of the position for which to burn liquidity\",\"tickUpper\":\"The upper tick of the position for which to burn liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 sent to the recipient\",\"amount1\":\"The amount of token1 sent to the recipient\"}},\"collect(address,int24,int24,uint128,uint128)\":{\"details\":\"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\",\"params\":{\"amount0Requested\":\"How much token0 should be withdrawn from the fees owed\",\"amount1Requested\":\"How much token1 should be withdrawn from the fees owed\",\"recipient\":\"The address which should receive the fees collected\",\"tickLower\":\"The lower tick of the position for which to collect fees\",\"tickUpper\":\"The upper tick of the position for which to collect fees\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"flash(address,uint256,uint256,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback\",\"params\":{\"amount0\":\"The amount of token0 to send\",\"amount1\":\"The amount of token1 to send\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address which will receive the token0 and token1 amounts\"}},\"increaseObservationCardinalityNext(uint16)\":{\"details\":\"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.\",\"params\":{\"observationCardinalityNext\":\"The desired minimum number of observations for the pool to store\"}},\"initialize(uint160)\":{\"details\":\"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\",\"params\":{\"sqrtPriceX96\":\"the initial sqrt price of the pool as a Q64.96\"}},\"mint(address,int24,int24,uint128,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.\",\"params\":{\"amount\":\"The amount of liquidity to mint\",\"data\":\"Any data that should be passed through to the callback\",\"recipient\":\"The address for which the liquidity will be created\",\"tickLower\":\"The lower tick of the position in which to add liquidity\",\"tickUpper\":\"The upper tick of the position in which to add liquidity\"},\"returns\":{\"amount0\":\"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\",\"amount1\":\"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\"}},\"swap(address,bool,int256,uint160,bytes)\":{\"details\":\"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\",\"params\":{\"amountSpecified\":\"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\",\"data\":\"Any data to be passed through to the callback\",\"recipient\":\"The address to receive the output of the swap\",\"sqrtPriceLimitX96\":\"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\",\"zeroForOne\":\"The direction of the swap, true for token0 to token1, false for token1 to token0\"},\"returns\":{\"amount0\":\"The delta of the balance of token0 of the pool, exact when negative, minimum when positive\",\"amount1\":\"The delta of the balance of token1 of the pool, exact when negative, minimum when positive\"}}},\"title\":\"Permissionless pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(int24,int24,uint128)\":{\"notice\":\"Burn liquidity from the sender and account tokens owed for the liquidity to the position\"},\"collect(address,int24,int24,uint128,uint128)\":{\"notice\":\"Collects tokens owed to a position\"},\"flash(address,uint256,uint256,bytes)\":{\"notice\":\"Receive token0 and/or token1 and pay it back, plus a fee, in the callback\"},\"increaseObservationCardinalityNext(uint16)\":{\"notice\":\"Increase the maximum number of price and liquidity observations that this pool will store\"},\"initialize(uint160)\":{\"notice\":\"Sets the initial price for the pool\"},\"mint(address,int24,int24,uint128,bytes)\":{\"notice\":\"Adds liquidity for the given recipient/tickLower/tickUpper position\"},\"swap(address,bool,int256,uint160,bytes)\":{\"notice\":\"Swap token0 for token1, or token1 for token0\"}},\"notice\":\"Contains pool methods that can be called by anyone\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":\"IUniswapV3PoolActions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flash"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"increaseObservationCardinalityNext"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}]}],"devdoc":{"kind":"dev","methods":{"burn(int24,int24,uint128)":{"details":"Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0Fees must be collected separately via a call to #collect","params":{"amount":"How much liquidity to burn","tickLower":"The lower tick of the position for which to burn liquidity","tickUpper":"The upper tick of the position for which to burn liquidity"},"returns":{"amount0":"The amount of token0 sent to the recipient","amount1":"The amount of token1 sent to the recipient"}},"collect(address,int24,int24,uint128,uint128)":{"details":"Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity. Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.","params":{"amount0Requested":"How much token0 should be withdrawn from the fees owed","amount1Requested":"How much token1 should be withdrawn from the fees owed","recipient":"The address which should receive the fees collected","tickLower":"The lower tick of the position for which to collect fees","tickUpper":"The upper tick of the position for which to collect fees"},"returns":{"amount0":"The amount of fees collected in token0","amount1":"The amount of fees collected in token1"}},"flash(address,uint256,uint256,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallbackCan be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling with 0 amount{0,1} and sending the donation amount(s) from the callback","params":{"amount0":"The amount of token0 to send","amount1":"The amount of token1 to send","data":"Any data to be passed through to the callback","recipient":"The address which will receive the token0 and token1 amounts"}},"increaseObservationCardinalityNext(uint16)":{"details":"This method is no-op if the pool already has an observationCardinalityNext greater than or equal to the input observationCardinalityNext.","params":{"observationCardinalityNext":"The desired minimum number of observations for the pool to store"}},"initialize(uint160)":{"details":"Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value","params":{"sqrtPriceX96":"the initial sqrt price of the pool as a Q64.96"}},"mint(address,int24,int24,uint128,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends on tickLower, tickUpper, the amount of liquidity, and the current price.","params":{"amount":"The amount of liquidity to mint","data":"Any data that should be passed through to the callback","recipient":"The address for which the liquidity will be created","tickLower":"The lower tick of the position in which to add liquidity","tickUpper":"The upper tick of the position in which to add liquidity"},"returns":{"amount0":"The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback","amount1":"The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback"}},"swap(address,bool,int256,uint160,bytes)":{"details":"The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback","params":{"amountSpecified":"The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)","data":"Any data to be passed through to the callback","recipient":"The address to receive the output of the swap","sqrtPriceLimitX96":"The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap","zeroForOne":"The direction of the swap, true for token0 to token1, false for token1 to token0"},"returns":{"amount0":"The delta of the balance of token0 of the pool, exact when negative, minimum when positive","amount1":"The delta of the balance of token1 of the pool, exact when negative, minimum when positive"}}},"version":1},"userdoc":{"kind":"user","methods":{"burn(int24,int24,uint128)":{"notice":"Burn liquidity from the sender and account tokens owed for the liquidity to the position"},"collect(address,int24,int24,uint128,uint128)":{"notice":"Collects tokens owed to a position"},"flash(address,uint256,uint256,bytes)":{"notice":"Receive token0 and/or token1 and pay it back, plus a fee, in the callback"},"increaseObservationCardinalityNext(uint16)":{"notice":"Increase the maximum number of price and liquidity observations that this pool will store"},"initialize(uint160)":{"notice":"Sets the initial price for the pool"},"mint(address,int24,int24,uint128,bytes)":{"notice":"Adds liquidity for the given recipient/tickLower/tickUpper position"},"swap(address,bool,int256,uint160,bytes)":{"notice":"Swap token0 for token1, or token1 for token0"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":"IUniswapV3PoolActions"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"}},"version":1},"id":59} \ No newline at end of file diff --git a/out/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json b/out/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json new file mode 100644 index 00000000..6e521ebe --- /dev/null +++ b/out/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"observe","inputs":[{"name":"secondsAgos","type":"uint32[]","internalType":"uint32[]"}],"outputs":[{"name":"tickCumulatives","type":"int56[]","internalType":"int56[]"},{"name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]","internalType":"uint160[]"}],"stateMutability":"view"},{"type":"function","name":"snapshotCumulativesInside","inputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}],"outputs":[{"name":"tickCumulativeInside","type":"int56","internalType":"int56"},{"name":"secondsPerLiquidityInsideX128","type":"uint160","internalType":"uint160"},{"name":"secondsInside","type":"uint32","internalType":"uint32"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"observe(uint32[])":"883bdbfd","snapshotCumulativesInside(int24,int24)":"a38807f2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"secondsAgos\",\"type\":\"uint32[]\"}],\"name\":\"observe\",\"outputs\":[{\"internalType\":\"int56[]\",\"name\":\"tickCumulatives\",\"type\":\"int56[]\"},{\"internalType\":\"uint160[]\",\"name\":\"secondsPerLiquidityCumulativeX128s\",\"type\":\"uint160[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"snapshotCumulativesInside\",\"outputs\":[{\"internalType\":\"int56\",\"name\":\"tickCumulativeInside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityInsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsInside\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}}},\"title\":\"Pool state that is not stored\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"}},\"notice\":\"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":\"IUniswapV3PoolDerivedState\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"stateMutability":"view","type":"function","name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}]},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"stateMutability":"view","type":"function","name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}]}],"devdoc":{"kind":"dev","methods":{"observe(uint32[])":{"details":"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.","params":{"secondsAgos":"From how long ago each cumulative tick and liquidity value should be returned"},"returns":{"secondsPerLiquidityCumulativeX128s":"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp","tickCumulatives":"Cumulative tick values as of each `secondsAgos` from the current block timestamp"}},"snapshotCumulativesInside(int24,int24)":{"details":"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.","params":{"tickLower":"The lower tick of the range","tickUpper":"The upper tick of the range"},"returns":{"secondsInside":"The snapshot of seconds per liquidity for the range","secondsPerLiquidityInsideX128":"The snapshot of seconds per liquidity for the range","tickCumulativeInside":"The snapshot of the tick accumulator for the range"}}},"version":1},"userdoc":{"kind":"user","methods":{"observe(uint32[])":{"notice":"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp"},"snapshotCumulativesInside(int24,int24)":{"notice":"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":"IUniswapV3PoolDerivedState"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"}},"version":1},"id":60} \ No newline at end of file diff --git a/out/IUniswapV3PoolErrors.sol/IUniswapV3PoolErrors.json b/out/IUniswapV3PoolErrors.sol/IUniswapV3PoolErrors.json new file mode 100644 index 00000000..bea6bc1d --- /dev/null +++ b/out/IUniswapV3PoolErrors.sol/IUniswapV3PoolErrors.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"AI","inputs":[]},{"type":"error","name":"AS","inputs":[]},{"type":"error","name":"F0","inputs":[]},{"type":"error","name":"F1","inputs":[]},{"type":"error","name":"IIA","inputs":[]},{"type":"error","name":"L","inputs":[]},{"type":"error","name":"LOK","inputs":[]},{"type":"error","name":"M0","inputs":[]},{"type":"error","name":"M1","inputs":[]},{"type":"error","name":"TLM","inputs":[]},{"type":"error","name":"TLU","inputs":[]},{"type":"error","name":"TUM","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AI\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"F0\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"F1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IIA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LOK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"M0\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"M1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TLM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TLU\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TUM\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Errors emitted by a pool\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains all events emitted by the pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":\"IUniswapV3PoolErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AI"},{"inputs":[],"type":"error","name":"AS"},{"inputs":[],"type":"error","name":"F0"},{"inputs":[],"type":"error","name":"F1"},{"inputs":[],"type":"error","name":"IIA"},{"inputs":[],"type":"error","name":"L"},{"inputs":[],"type":"error","name":"LOK"},{"inputs":[],"type":"error","name":"M0"},{"inputs":[],"type":"error","name":"M1"},{"inputs":[],"type":"error","name":"TLM"},{"inputs":[],"type":"error","name":"TLU"},{"inputs":[],"type":"error","name":"TUM"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":"IUniswapV3PoolErrors"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"keccak256":"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b","urls":["bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa","dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco"],"license":"GPL-2.0-or-later"}},"version":1},"id":61} \ No newline at end of file diff --git a/out/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json b/out/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json new file mode 100644 index 00000000..ab51b7f1 --- /dev/null +++ b/out/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"Burn","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":true,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":true,"internalType":"int24"},{"name":"amount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Collect","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":true,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":true,"internalType":"int24"},{"name":"amount0","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount1","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"CollectProtocol","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount1","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"paid0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"paid1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"IncreaseObservationCardinalityNext","inputs":[{"name":"observationCardinalityNextOld","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"observationCardinalityNextNew","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"Initialize","inputs":[{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":true,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":true,"internalType":"int24"},{"name":"amount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetFeeProtocol","inputs":[{"name":"feeProtocol0Old","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"feeProtocol1Old","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"feeProtocol0New","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"feeProtocol1New","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int256","indexed":false,"internalType":"int256"},{"name":"amount1","type":"int256","indexed":false,"internalType":"int256"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"name\":\"CollectProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paid1\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextOld\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"observationCardinalityNextNew\",\"type\":\"uint16\"}],\"name\":\"IncreaseObservationCardinalityNext\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1Old\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol0New\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"feeProtocol1New\",\"type\":\"uint8\"}],\"name\":\"SetFeeProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount0\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"amount1\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Swap\",\"type\":\"event\"}],\"devdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"details\":\"Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\",\"params\":{\"amount\":\"The amount of liquidity to remove\",\"amount0\":\"The amount of token0 withdrawn\",\"amount1\":\"The amount of token1 withdrawn\",\"owner\":\"The owner of the position for which liquidity is removed\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"details\":\"Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\",\"params\":{\"amount0\":\"The amount of token0 fees collected\",\"amount1\":\"The amount of token1 fees collected\",\"owner\":\"The owner of the position for which fees are collected\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"CollectProtocol(address,address,uint128,uint128)\":{\"params\":{\"amount0\":\"The amount of token1 protocol fees that is withdrawn\",\"recipient\":\"The address that receives the collected protocol fees\",\"sender\":\"The address that collects the protocol fees\"}},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount of token0 that was flashed\",\"amount1\":\"The amount of token1 that was flashed\",\"paid0\":\"The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\",\"paid1\":\"The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\",\"recipient\":\"The address that received the tokens from flash\",\"sender\":\"The address that initiated the swap call, and that received the callback\"}},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"details\":\"observationCardinalityNext is not the observation cardinality until an observation is written at the index just before a mint/swap/burn.\",\"params\":{\"observationCardinalityNextNew\":\"The updated value of the next observation cardinality\",\"observationCardinalityNextOld\":\"The previous value of the next observation cardinality\"}},\"Initialize(uint160,int24)\":{\"details\":\"Mint/Burn/Swap cannot be emitted by the pool before Initialize\",\"params\":{\"sqrtPriceX96\":\"The initial sqrt price of the pool, as a Q64.96\",\"tick\":\"The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\"}},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of liquidity minted to the position range\",\"amount0\":\"How much token0 was required for the minted liquidity\",\"amount1\":\"How much token1 was required for the minted liquidity\",\"owner\":\"The owner of the position and recipient of any minted liquidity\",\"sender\":\"The address that minted the liquidity\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"params\":{\"feeProtocol0New\":\"The updated value of the token0 protocol fee\",\"feeProtocol0Old\":\"The previous value of the token0 protocol fee\",\"feeProtocol1New\":\"The updated value of the token1 protocol fee\",\"feeProtocol1Old\":\"The previous value of the token1 protocol fee\"}},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"params\":{\"amount0\":\"The delta of the token0 balance of the pool\",\"amount1\":\"The delta of the token1 balance of the pool\",\"liquidity\":\"The liquidity of the pool after the swap\",\"recipient\":\"The address that received the output of the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"Events emitted by a pool\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when a position's liquidity is removed\"},\"Collect(address,address,int24,int24,uint128,uint128)\":{\"notice\":\"Emitted when fees are collected by the owner of a position\"},\"CollectProtocol(address,address,uint128,uint128)\":{\"notice\":\"Emitted when the collected protocol fees are withdrawn by the factory owner\"},\"Flash(address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted by the pool for any flashes of token0/token1\"},\"IncreaseObservationCardinalityNext(uint16,uint16)\":{\"notice\":\"Emitted by the pool for increases to the number of observations that can be stored\"},\"Initialize(uint160,int24)\":{\"notice\":\"Emitted exactly once by a pool when #initialize is first called on the pool\"},\"Mint(address,address,int24,int24,uint128,uint256,uint256)\":{\"notice\":\"Emitted when liquidity is minted for a given position\"},\"SetFeeProtocol(uint8,uint8,uint8,uint8)\":{\"notice\":\"Emitted when the protocol fee is changed by the pool\"},\"Swap(address,address,int256,int256,uint160,uint128,int24)\":{\"notice\":\"Emitted by the pool for any swaps between token0 and token1\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains all events emitted by the pool\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":\"IUniswapV3PoolEvents\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":true},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":true},{"internalType":"uint128","name":"amount","type":"uint128","indexed":false},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"int24","name":"tickLower","type":"int24","indexed":true},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":true},{"internalType":"uint128","name":"amount0","type":"uint128","indexed":false},{"internalType":"uint128","name":"amount1","type":"uint128","indexed":false}],"type":"event","name":"Collect","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint128","name":"amount0","type":"uint128","indexed":false},{"internalType":"uint128","name":"amount1","type":"uint128","indexed":false}],"type":"event","name":"CollectProtocol","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false},{"internalType":"uint256","name":"paid0","type":"uint256","indexed":false},{"internalType":"uint256","name":"paid1","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16","indexed":false},{"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16","indexed":false}],"type":"event","name":"IncreaseObservationCardinalityNext","anonymous":false},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Initialize","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":true},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":true},{"internalType":"uint128","name":"amount","type":"uint128","indexed":false},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"uint8","name":"feeProtocol0Old","type":"uint8","indexed":false},{"internalType":"uint8","name":"feeProtocol1Old","type":"uint8","indexed":false},{"internalType":"uint8","name":"feeProtocol0New","type":"uint8","indexed":false},{"internalType":"uint8","name":"feeProtocol1New","type":"uint8","indexed":false}],"type":"event","name":"SetFeeProtocol","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"int256","name":"amount0","type":"int256","indexed":false},{"internalType":"int256","name":"amount1","type":"int256","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Swap","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":"IUniswapV3PoolEvents"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"}},"version":1},"id":62} \ No newline at end of file diff --git a/out/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json b/out/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json new file mode 100644 index 00000000..9b8e1e65 --- /dev/null +++ b/out/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"view"},{"type":"function","name":"maxLiquidityPerTick","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"tickSpacing","inputs":[],"outputs":[{"name":"","type":"int24","internalType":"int24"}],"stateMutability":"view"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"factory()":"c45a0155","fee()":"ddca3f43","maxLiquidityPerTick()":"70cf754a","tickSpacing()":"d0c93a7c","token0()":"0dfe1681","token1()":"d21220a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":\"IUniswapV3PoolImmutables\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"factory()":{"returns":{"_0":"The contract address"}},"fee()":{"returns":{"_0":"The fee"}},"maxLiquidityPerTick()":{"details":"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool","returns":{"_0":"The max amount of liquidity per tick"}},"tickSpacing()":{"details":"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.","returns":{"_0":"The tick spacing"}},"token0()":{"returns":{"_0":"The token contract address"}},"token1()":{"returns":{"_0":"The token contract address"}}},"version":1},"userdoc":{"kind":"user","methods":{"factory()":{"notice":"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface"},"fee()":{"notice":"The pool's fee in hundredths of a bip, i.e. 1e-6"},"maxLiquidityPerTick()":{"notice":"The maximum amount of position liquidity that can use any tick in the range"},"tickSpacing()":{"notice":"The pool tick spacing"},"token0()":{"notice":"The first of the two tokens of the pool, sorted by address"},"token1()":{"notice":"The second of the two tokens of the pool, sorted by address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":"IUniswapV3PoolImmutables"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"}},"version":1},"id":63} \ No newline at end of file diff --git a/out/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json b/out/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json new file mode 100644 index 00000000..3af77249 --- /dev/null +++ b/out/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"collectProtocol","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount0Requested","type":"uint128","internalType":"uint128"},{"name":"amount1Requested","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"amount0","type":"uint128","internalType":"uint128"},{"name":"amount1","type":"uint128","internalType":"uint128"}],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeProtocol","inputs":[{"name":"feeProtocol0","type":"uint8","internalType":"uint8"},{"name":"feeProtocol1","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"collectProtocol(address,uint128,uint128)":"85b66729","setFeeProtocol(uint8,uint8)":"8206a4d1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Requested\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Requested\",\"type\":\"uint128\"}],\"name\":\"collectProtocol\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":\"IUniswapV3PoolOwnerActions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}]},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setFeeProtocol"}],"devdoc":{"kind":"dev","methods":{"collectProtocol(address,uint128,uint128)":{"params":{"amount0Requested":"The maximum amount of token0 to send, can be 0 to collect fees in only token1","amount1Requested":"The maximum amount of token1 to send, can be 0 to collect fees in only token0","recipient":"The address to which collected protocol fees should be sent"},"returns":{"amount0":"The protocol fee collected in token0","amount1":"The protocol fee collected in token1"}},"setFeeProtocol(uint8,uint8)":{"params":{"feeProtocol0":"new protocol fee for token0 of the pool","feeProtocol1":"new protocol fee for token1 of the pool"}}},"version":1},"userdoc":{"kind":"user","methods":{"collectProtocol(address,uint128,uint128)":{"notice":"Collect the protocol fee accrued to the pool"},"setFeeProtocol(uint8,uint8)":{"notice":"Set the denominator of the protocol's % share of the fees"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":"IUniswapV3PoolOwnerActions"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"}},"version":1},"id":64} \ No newline at end of file diff --git a/out/IUniswapV3PoolState.sol/IUniswapV3PoolState.json b/out/IUniswapV3PoolState.sol/IUniswapV3PoolState.json new file mode 100644 index 00000000..0aca2661 --- /dev/null +++ b/out/IUniswapV3PoolState.sol/IUniswapV3PoolState.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"feeGrowthGlobal0X128","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"feeGrowthGlobal1X128","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"liquidity","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"observations","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockTimestamp","type":"uint32","internalType":"uint32"},{"name":"tickCumulative","type":"int56","internalType":"int56"},{"name":"secondsPerLiquidityCumulativeX128","type":"uint160","internalType":"uint160"},{"name":"initialized","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"positions","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"feeGrowthInside0LastX128","type":"uint256","internalType":"uint256"},{"name":"feeGrowthInside1LastX128","type":"uint256","internalType":"uint256"},{"name":"tokensOwed0","type":"uint128","internalType":"uint128"},{"name":"tokensOwed1","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"protocolFees","inputs":[],"outputs":[{"name":"token0","type":"uint128","internalType":"uint128"},{"name":"token1","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"slot0","inputs":[],"outputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"},{"name":"observationIndex","type":"uint16","internalType":"uint16"},{"name":"observationCardinality","type":"uint16","internalType":"uint16"},{"name":"observationCardinalityNext","type":"uint16","internalType":"uint16"},{"name":"feeProtocol","type":"uint8","internalType":"uint8"},{"name":"unlocked","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tickBitmap","inputs":[{"name":"wordPosition","type":"int16","internalType":"int16"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ticks","inputs":[{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"liquidityGross","type":"uint128","internalType":"uint128"},{"name":"liquidityNet","type":"int128","internalType":"int128"},{"name":"feeGrowthOutside0X128","type":"uint256","internalType":"uint256"},{"name":"feeGrowthOutside1X128","type":"uint256","internalType":"uint256"},{"name":"tickCumulativeOutside","type":"int56","internalType":"int56"},{"name":"secondsPerLiquidityOutsideX128","type":"uint160","internalType":"uint160"},{"name":"secondsOutside","type":"uint32","internalType":"uint32"},{"name":"initialized","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"feeGrowthGlobal0X128()":"f3058399","feeGrowthGlobal1X128()":"46141319","liquidity()":"1a686502","observations(uint256)":"252c09d7","positions(bytes32)":"514ea4bf","protocolFees()":"1ad8b03b","slot0()":"3850c7bd","tickBitmap(int16)":"5339c296","ticks(int24)":"f30dba93"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"feeGrowthGlobal0X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1X128\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityCumulativeX128\",\"type\":\"uint160\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"token0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"token1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinalityNext\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int16\",\"name\":\"wordPosition\",\"type\":\"int16\"}],\"name\":\"tickBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidityGross\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"liquidityNet\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1X128\",\"type\":\"uint256\"},{\"internalType\":\"int56\",\"name\":\"tickCumulativeOutside\",\"type\":\"int56\"},{\"internalType\":\"uint160\",\"name\":\"secondsPerLiquidityOutsideX128\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"secondsOutside\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"details\":\"This value can overflow the uint256\"},\"feeGrowthGlobal1X128()\":{\"details\":\"This value can overflow the uint256\"},\"liquidity()\":{\"details\":\"This value has no relationship to the total liquidity across all ticks\",\"returns\":{\"_0\":\"The liquidity at the current price of the pool\"}},\"observations(uint256)\":{\"details\":\"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.\",\"params\":{\"index\":\"The element of the observations array to fetch\"},\"returns\":{\"blockTimestamp\":\"The timestamp of the observation,\",\"initialized\":\"whether the observation has been initialized and the values are safe to use\",\"secondsPerLiquidityCumulativeX128\":\"the seconds per in range liquidity for the life of the pool as of the observation timestamp,\",\"tickCumulative\":\"the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\"}},\"positions(bytes32)\":{\"params\":{\"key\":\"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\"},\"returns\":{\"feeGrowthInside0LastX128\":\"fee growth of token0 inside the tick range as of the last mint/burn/poke,\",\"feeGrowthInside1LastX128\":\"fee growth of token1 inside the tick range as of the last mint/burn/poke,\",\"liquidity\":\"The amount of liquidity in the position,\",\"tokensOwed0\":\"the computed amount of token0 owed to the position as of the last mint/burn/poke,\",\"tokensOwed1\":\"the computed amount of token1 owed to the position as of the last mint/burn/poke\"}},\"protocolFees()\":{\"details\":\"Protocol fees will never exceed uint128 max in either token\"},\"slot0()\":{\"returns\":{\"feeProtocol\":\"The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy\",\"observationCardinality\":\"The current maximum number of observations stored in the pool,\",\"observationCardinalityNext\":\"The next maximum number of observations, to be updated when the observation.\",\"observationIndex\":\"The index of the last oracle observation that was written,\",\"sqrtPriceX96\":\"The current price of the pool as a sqrt(token1/token0) Q64.96 value\",\"tick\":\"The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary.\"}},\"ticks(int24)\":{\"params\":{\"tick\":\"The tick to look up\"},\"returns\":{\"feeGrowthOutside0X128\":\"the fee growth on the other side of the tick from the current tick in token0,\",\"feeGrowthOutside1X128\":\"the fee growth on the other side of the tick from the current tick in token1,\",\"initialized\":\"Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.\",\"liquidityGross\":\"the total amount of position liquidity that uses the pool either as tick lower or tick upper\",\"liquidityNet\":\"how much liquidity changes when the pool price crosses the tick,\",\"secondsOutside\":\"the seconds spent on the other side of the tick from the current tick,\",\"secondsPerLiquidityOutsideX128\":\"the seconds spent per liquidity on the other side of the tick from the current tick,\",\"tickCumulativeOutside\":\"the cumulative tick value on the other side of the tick from the current tick\"}}},\"title\":\"Pool state that can change\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"feeGrowthGlobal0X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\"},\"feeGrowthGlobal1X128()\":{\"notice\":\"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\"},\"liquidity()\":{\"notice\":\"The currently in range liquidity available to the pool\"},\"observations(uint256)\":{\"notice\":\"Returns data about a specific observation index\"},\"positions(bytes32)\":{\"notice\":\"Returns the information about a position by the position's key\"},\"protocolFees()\":{\"notice\":\"The amounts of token0 and token1 that are owed to the protocol\"},\"slot0()\":{\"notice\":\"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally.\"},\"tickBitmap(int16)\":{\"notice\":\"Returns 256 packed tick initialized boolean values. See TickBitmap for more information\"},\"ticks(int24)\":{\"notice\":\"Look up information about a specific tick in the pool\"}},\"notice\":\"These methods compose the pool's state, and can change with any frequency including multiple times per transaction\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":\"IUniswapV3PoolState\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"stateMutability":"view","type":"function","name":"positions","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}]},{"inputs":[{"internalType":"int16","name":"wordPosition","type":"int16"}],"stateMutability":"view","type":"function","name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"stateMutability":"view","type":"function","name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"feeGrowthGlobal0X128()":{"details":"This value can overflow the uint256"},"feeGrowthGlobal1X128()":{"details":"This value can overflow the uint256"},"liquidity()":{"details":"This value has no relationship to the total liquidity across all ticks","returns":{"_0":"The liquidity at the current price of the pool"}},"observations(uint256)":{"details":"You most likely want to use #observe() instead of this method to get an observation as of some amount of time ago, rather than at a specific index in the array.","params":{"index":"The element of the observations array to fetch"},"returns":{"blockTimestamp":"The timestamp of the observation,","initialized":"whether the observation has been initialized and the values are safe to use","secondsPerLiquidityCumulativeX128":"the seconds per in range liquidity for the life of the pool as of the observation timestamp,","tickCumulative":"the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,"}},"positions(bytes32)":{"params":{"key":"The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper"},"returns":{"feeGrowthInside0LastX128":"fee growth of token0 inside the tick range as of the last mint/burn/poke,","feeGrowthInside1LastX128":"fee growth of token1 inside the tick range as of the last mint/burn/poke,","liquidity":"The amount of liquidity in the position,","tokensOwed0":"the computed amount of token0 owed to the position as of the last mint/burn/poke,","tokensOwed1":"the computed amount of token1 owed to the position as of the last mint/burn/poke"}},"protocolFees()":{"details":"Protocol fees will never exceed uint128 max in either token"},"slot0()":{"returns":{"feeProtocol":"The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0 is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. unlocked Whether the pool is currently locked to reentrancy","observationCardinality":"The current maximum number of observations stored in the pool,","observationCardinalityNext":"The next maximum number of observations, to be updated when the observation.","observationIndex":"The index of the last oracle observation that was written,","sqrtPriceX96":"The current price of the pool as a sqrt(token1/token0) Q64.96 value","tick":"The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary."}},"ticks(int24)":{"params":{"tick":"The tick to look up"},"returns":{"feeGrowthOutside0X128":"the fee growth on the other side of the tick from the current tick in token0,","feeGrowthOutside1X128":"the fee growth on the other side of the tick from the current tick in token1,","initialized":"Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false. Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and must be used only in comparison to previous snapshots for a specific position.","liquidityGross":"the total amount of position liquidity that uses the pool either as tick lower or tick upper","liquidityNet":"how much liquidity changes when the pool price crosses the tick,","secondsOutside":"the seconds spent on the other side of the tick from the current tick,","secondsPerLiquidityOutsideX128":"the seconds spent per liquidity on the other side of the tick from the current tick,","tickCumulativeOutside":"the cumulative tick value on the other side of the tick from the current tick"}}},"version":1},"userdoc":{"kind":"user","methods":{"feeGrowthGlobal0X128()":{"notice":"The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool"},"feeGrowthGlobal1X128()":{"notice":"The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool"},"liquidity()":{"notice":"The currently in range liquidity available to the pool"},"observations(uint256)":{"notice":"Returns data about a specific observation index"},"positions(bytes32)":{"notice":"Returns the information about a position by the position's key"},"protocolFees()":{"notice":"The amounts of token0 and token1 that are owed to the protocol"},"slot0()":{"notice":"The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas when accessed externally."},"tickBitmap(int16)":{"notice":"Returns 256 packed tick initialized boolean values. See TickBitmap for more information"},"ticks(int24)":{"notice":"Look up information about a specific tick in the pool"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":"IUniswapV3PoolState"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43","urls":["bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea","dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp"],"license":"GPL-2.0-or-later"}},"version":1},"id":65} \ No newline at end of file diff --git a/out/Initializable.sol/Initializable.json b/out/Initializable.sol/Initializable.json new file mode 100644 index 00000000..a138f470 --- /dev/null +++ b/out/Initializable.sol/Initializable.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ``` contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":"Initializable"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"}},"version":1},"id":38} \ No newline at end of file diff --git a/out/Merkle.sol/Merkle.json b/out/Merkle.sol/Merkle.json new file mode 100644 index 00000000..eca16db0 --- /dev/null +++ b/out/Merkle.sol/Merkle.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x607c610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea26469706673582212204a4003b28a5293f69193c91ca7491f7c8a0514166db57fca5497a84c7b30dafc64736f6c634300080c0033","sourceMap":"821:6414:100:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;821:6414:100;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063f8a8fd6d146038575b600080fd5b818015604357600080fd5b5000fea26469706673582212204a4003b28a5293f69193c91ca7491f7c8a0514166db57fca5497a84c7b30dafc64736f6c634300080c0033","sourceMap":"821:6414:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;7208:25;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"test()":"f8a8fd6d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"These functions deal with verification of Merkle Tree proofs. The tree and the proofs can be generated using our https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. You will find a quickstart guide in the readme. WARNING: You should avoid using leaf values that are 64 bytes long prior to hashing, or use a hash function other than keccak256 for hashing leaves. This is because the concatenation of a sorted pair of internal nodes in the merkle tree could be reinterpreted as a leaf value. OpenZeppelin's JavaScript library generates merkle trees that are safe against this attack out of the box.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/Merkle.sol\":\"Merkle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/Merkle.sol":"Merkle"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"}},"version":1},"id":100} \ No newline at end of file diff --git a/out/MetaCoin.sol/MetaCoin.json b/out/MetaCoin.sol/MetaCoin.json new file mode 100644 index 00000000..3f08f901 --- /dev/null +++ b/out/MetaCoin.sol/MetaCoin.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"serviceManager","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"balances","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"policyID","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sendCoin","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"predicateMessage","type":"tuple","internalType":"struct PredicateMessage","components":[{"name":"taskId","type":"string","internalType":"string"},{"name":"expireByBlockNumber","type":"uint256","internalType":"uint256"},{"name":"signerAddresses","type":"address[]","internalType":"address[]"},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IServiceManager"}],"stateMutability":"view"},{"type":"function","name":"setPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceManager","inputs":[{"name":"_serviceManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"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":"error","name":"PredicateClient__Unauthorized","inputs":[]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162000fd338038062000fd3833981016040819052620000349162000178565b6200003f336200007e565b6001600160a01b03821660009081526003602052604090206509184e72a00090556200006b81620000ce565b62000076826200007e565b5050620001b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000d8620000fa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620001595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b80516001600160a01b03811681146200017357600080fd5b919050565b600080604083850312156200018c57600080fd5b62000197836200015b565b9150620001a7602084016200015b565b90509250929050565b610e1380620001c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639b41bf23116100665780639b41bf231461012f578063c6cf634b14610142578063ee2453c614610157578063f2fde38b1461016a578063f8b2cb4f1461017d57600080fd5b806327e235e3146100a35780633998fdd3146100d65780636b4c991b14610101578063715018a6146101165780638da5cb5b1461011e575b600080fd5b6100c36100b13660046107fe565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6001546100e9906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b61011461010f366004610908565b6101a6565b005b610114610227565b6000546001600160a01b03166100e9565b61011461013d3660046107fe565b61023b565b61014a610265565b6040516100cd919061098a565b61011461016536600461099d565b6102f3565b6101146101783660046107fe565b6103bc565b6100c361018b3660046107fe565b6001600160a01b031660009081526003602052604090205490565b6101ae610435565b80516101c1906002906020840190610749565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b906101f290849060040161098a565b600060405180830381600087803b15801561020c57600080fd5b505af1158015610220573d6000803e3d6000fd5b5050505050565b61022f610435565b610239600061048f565b565b610243610435565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610272906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461029e906109fb565b80156102eb5780601f106102c0576101008083540402835291602001916102eb565b820191906000526020600020905b8154815290600101906020018083116102ce57829003601f168201915b505050505081565b6040516001600160a01b03841660248201526044810183905260009060640160408051601f198184030181529190526020810180516001600160e01b03166353e45cb560e11b179052905061035061034a83610aff565b826104df565b6103ac5760405162461bcd60e51b815260206004820152602260248201527f4d657461436f696e3a20756e617574686f72697a6564207472616e736163746960448201526137b760f11b60648201526084015b60405180910390fd5b6103b68484610655565b50505050565b6103c4610435565b6001600160a01b0381166104295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a3565b6104328161048f565b50565b6000546001600160a01b031633146102395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060405180610100016040528085600001518152602001336001600160a01b03168152602001306001600160a01b031681526020013481526020018481526020016002805461052f906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461055b906109fb565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050509183525050604080870180515163ffffffff16602080850191909152880151928201929092526001549151606088015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d9261060a928692600401610c8b565b6020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610d76565b949350505050565b336000908152600360205260409020548111156106b45760405162461bcd60e51b815260206004820152601e60248201527f4d657461436f696e3a20696e73756666696369656e742062616c616e6365000060448201526064016103a3565b33600090815260036020526040812080548392906106d3908490610dae565b90915550506001600160a01b03821660009081526003602052604081208054839290610700908490610dc5565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054610755906109fb565b90600052602060002090601f01602090048101928261077757600085556107bd565b82601f1061079057805160ff19168380011785556107bd565b828001600101855582156107bd579182015b828111156107bd5782518255916020019190600101906107a2565b506107c99291506107cd565b5090565b5b808211156107c957600081556001016107ce565b80356001600160a01b03811681146107f957600080fd5b919050565b60006020828403121561081057600080fd5b610819826107e2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561085957610859610820565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561088857610888610820565b604052919050565b600067ffffffffffffffff8311156108aa576108aa610820565b6108bd601f8401601f191660200161085f565b90508281528383830111156108d157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126108f957600080fd5b61081983833560208501610890565b60006020828403121561091a57600080fd5b813567ffffffffffffffff81111561093157600080fd5b61064d848285016108e8565b6000815180845260005b8181101561096357602081850181015186830182015201610947565b81811115610975576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610819602083018461093d565b6000806000606084860312156109b257600080fd5b6109bb846107e2565b925060208401359150604084013567ffffffffffffffff8111156109de57600080fd5b8401608081870312156109f057600080fd5b809150509250925092565b600181811c90821680610a0f57607f821691505b60208210811415610a3057634e487b7160e01b600052602260045260246000fd5b50919050565b600067ffffffffffffffff821115610a5057610a50610820565b5060051b60200190565b600082601f830112610a6b57600080fd5b81356020610a80610a7b83610a36565b61085f565b82815260059290921b84018101918181019086841115610a9f57600080fd5b8286015b84811015610af457803567ffffffffffffffff811115610ac35760008081fd5b8701603f81018913610ad55760008081fd5b610ae6898683013560408401610890565b845250918301918301610aa3565b509695505050505050565b600060808236031215610b1157600080fd5b610b19610836565b823567ffffffffffffffff80821115610b3157600080fd5b610b3d368387016108e8565b8352602091508185013582840152604085013581811115610b5d57600080fd5b850136601f820112610b6e57600080fd5b8035610b7c610a7b82610a36565b81815260059190911b82018401908481019036831115610b9b57600080fd5b928501925b82841015610bc057610bb1846107e2565b82529285019290850190610ba0565b60408701525050506060850135915080821115610bdc57600080fd5b50610be936828601610a5a565b60608301525092915050565b600081518084526020808501945080840160005b83811015610c2e5781516001600160a01b031687529582019590820190600101610c09565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015610c7e578383038952610c6c83835161093d565b98850198925090840190600101610c54565b5090979650505050505050565b6060815260008451610100806060850152610caa61016085018361093d565b91506020870151610cc660808601826001600160a01b03169052565b5060408701516001600160a01b031660a0850152606087015160c08501526080870151848303605f1990810160e0870152610d01848361093d565b935060a0890151915080868503018387015250610d1e838261093d565b9250505060c0860151610d3a61012085018263ffffffff169052565b5060e08601516101408401528281036020840152610d588186610bf5565b90508281036040840152610d6c8185610c39565b9695505050505050565b600060208284031215610d8857600080fd5b8151801515811461081957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610dc057610dc0610d98565b500390565b60008219821115610dd857610dd8610d98565b50019056fea2646970667358221220e3f74c6fee5ef6d14dc0a7a7584c1d1e744cfb0a789b6dfd7d9e8a7d8f82951964736f6c634300080c0033","sourceMap":"415:1254:72:-:0;;;589:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:41;719:10:52;936:18:41;:32::i;:::-;-1:-1:-1;;;;;650:15:72;;;;;;:8;:15;;;;;668:18;650:36;;696:33;714:14;696:17;:33::i;:::-;739:25;758:5;739:18;:25::i;:::-;589:182;;415:1254;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1117:149:79:-;1094:13:41;:11;:13::i;:::-;1210:14:79::1;:49:::0;;-1:-1:-1;;;;;;1210:49:79::1;-1:-1:-1::0;;;;;1210:49:79;;;::::1;::::0;;;::::1;::::0;;1117:149::o;1359:130:41:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;696:2:120;1414:68:41;;;678:21:120;;;715:18;;;708:30;774:34;754:18;;;747:62;826:18;;1414:68:41;;;;;;;;1359:130::o;14:177:120:-;93:13;;-1:-1:-1;;;;;135:31:120;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:356::-;415:1254:72;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80639b41bf23116100665780639b41bf231461012f578063c6cf634b14610142578063ee2453c614610157578063f2fde38b1461016a578063f8b2cb4f1461017d57600080fd5b806327e235e3146100a35780633998fdd3146100d65780636b4c991b14610101578063715018a6146101165780638da5cb5b1461011e575b600080fd5b6100c36100b13660046107fe565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6001546100e9906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b61011461010f366004610908565b6101a6565b005b610114610227565b6000546001600160a01b03166100e9565b61011461013d3660046107fe565b61023b565b61014a610265565b6040516100cd919061098a565b61011461016536600461099d565b6102f3565b6101146101783660046107fe565b6103bc565b6100c361018b3660046107fe565b6001600160a01b031660009081526003602052604090205490565b6101ae610435565b80516101c1906002906020840190610749565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b906101f290849060040161098a565b600060405180830381600087803b15801561020c57600080fd5b505af1158015610220573d6000803e3d6000fd5b5050505050565b61022f610435565b610239600061048f565b565b610243610435565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610272906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461029e906109fb565b80156102eb5780601f106102c0576101008083540402835291602001916102eb565b820191906000526020600020905b8154815290600101906020018083116102ce57829003601f168201915b505050505081565b6040516001600160a01b03841660248201526044810183905260009060640160408051601f198184030181529190526020810180516001600160e01b03166353e45cb560e11b179052905061035061034a83610aff565b826104df565b6103ac5760405162461bcd60e51b815260206004820152602260248201527f4d657461436f696e3a20756e617574686f72697a6564207472616e736163746960448201526137b760f11b60648201526084015b60405180910390fd5b6103b68484610655565b50505050565b6103c4610435565b6001600160a01b0381166104295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a3565b6104328161048f565b50565b6000546001600160a01b031633146102395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060405180610100016040528085600001518152602001336001600160a01b03168152602001306001600160a01b031681526020013481526020018481526020016002805461052f906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461055b906109fb565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050509183525050604080870180515163ffffffff16602080850191909152880151928201929092526001549151606088015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d9261060a928692600401610c8b565b6020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610d76565b949350505050565b336000908152600360205260409020548111156106b45760405162461bcd60e51b815260206004820152601e60248201527f4d657461436f696e3a20696e73756666696369656e742062616c616e6365000060448201526064016103a3565b33600090815260036020526040812080548392906106d3908490610dae565b90915550506001600160a01b03821660009081526003602052604081208054839290610700908490610dc5565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054610755906109fb565b90600052602060002090601f01602090048101928261077757600085556107bd565b82601f1061079057805160ff19168380011785556107bd565b828001600101855582156107bd579182015b828111156107bd5782518255916020019190600101906107a2565b506107c99291506107cd565b5090565b5b808211156107c957600081556001016107ce565b80356001600160a01b03811681146107f957600080fd5b919050565b60006020828403121561081057600080fd5b610819826107e2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561085957610859610820565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561088857610888610820565b604052919050565b600067ffffffffffffffff8311156108aa576108aa610820565b6108bd601f8401601f191660200161085f565b90508281528383830111156108d157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126108f957600080fd5b61081983833560208501610890565b60006020828403121561091a57600080fd5b813567ffffffffffffffff81111561093157600080fd5b61064d848285016108e8565b6000815180845260005b8181101561096357602081850181015186830182015201610947565b81811115610975576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610819602083018461093d565b6000806000606084860312156109b257600080fd5b6109bb846107e2565b925060208401359150604084013567ffffffffffffffff8111156109de57600080fd5b8401608081870312156109f057600080fd5b809150509250925092565b600181811c90821680610a0f57607f821691505b60208210811415610a3057634e487b7160e01b600052602260045260246000fd5b50919050565b600067ffffffffffffffff821115610a5057610a50610820565b5060051b60200190565b600082601f830112610a6b57600080fd5b81356020610a80610a7b83610a36565b61085f565b82815260059290921b84018101918181019086841115610a9f57600080fd5b8286015b84811015610af457803567ffffffffffffffff811115610ac35760008081fd5b8701603f81018913610ad55760008081fd5b610ae6898683013560408401610890565b845250918301918301610aa3565b509695505050505050565b600060808236031215610b1157600080fd5b610b19610836565b823567ffffffffffffffff80821115610b3157600080fd5b610b3d368387016108e8565b8352602091508185013582840152604085013581811115610b5d57600080fd5b850136601f820112610b6e57600080fd5b8035610b7c610a7b82610a36565b81815260059190911b82018401908481019036831115610b9b57600080fd5b928501925b82841015610bc057610bb1846107e2565b82529285019290850190610ba0565b60408701525050506060850135915080821115610bdc57600080fd5b50610be936828601610a5a565b60608301525092915050565b600081518084526020808501945080840160005b83811015610c2e5781516001600160a01b031687529582019590820190600101610c09565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015610c7e578383038952610c6c83835161093d565b98850198925090840190600101610c54565b5090979650505050505050565b6060815260008451610100806060850152610caa61016085018361093d565b91506020870151610cc660808601826001600160a01b03169052565b5060408701516001600160a01b031660a0850152606087015160c08501526080870151848303605f1990810160e0870152610d01848361093d565b935060a0890151915080868503018387015250610d1e838261093d565b9250505060c0860151610d3a61012085018263ffffffff169052565b5060e08601516101408401528281036020840152610d588186610bf5565b90508281036040840152610d6c8185610c39565b9695505050505050565b600060208284031215610d8857600080fd5b8151801515811461081957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610dc057610dc0610d98565b500390565b60008219821115610dd857610dd8610d98565b50019056fea2646970667358221220e3f74c6fee5ef6d14dc0a7a7584c1d1e744cfb0a789b6dfd7d9e8a7d8f82951964736f6c634300080c0033","sourceMap":"415:1254:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;529:25:120;;;517:2;502:18;458:43:72;;;;;;;;381:37:79;;;;;-1:-1:-1;;;;;381:37:79;;;;;;-1:-1:-1;;;;;754:32:120;;;736:51;;724:2;709:18;381:37:79;565:228:120;811:159:79;;;;;;:::i;:::-;;:::i;:::-;;1831:101:41;;;:::i;1201:85::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;1117:149:79;;;;;;:::i;:::-;;:::i;424:22::-;;;:::i;:::-;;;;;;;:::i;777:430:72:-;;;;;;:::i;:::-;;:::i;2081:198:41:-;;;;;;:::i;:::-;;:::i;1551:116:72:-;;;;;;:::i;:::-;-1:-1:-1;;;;;1646:14:72;1620:7;1646:14;;;:8;:14;;;;;;;1551:116;811:159:79;1094:13:41;:11;:13::i;:::-;898:20:79;;::::1;::::0;:8:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;928:14:79::1;::::0;:35:::1;::::0;-1:-1:-1;;;928:35:79;;-1:-1:-1;;;;;928:14:79;;::::1;::::0;:24:::1;::::0;:35:::1;::::0;953:9;;928:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;811:159:::0;:::o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1117:149:79:-;1094:13:41;:11;:13::i;:::-;1210:14:79::1;:49:::0;;-1:-1:-1;;;;;;1210:49:79::1;-1:-1:-1::0;;;;;1210:49:79;;;::::1;::::0;;;::::1;::::0;;1117:149::o;424:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;777:430:72:-;923:71;;-1:-1:-1;;;;;4574:32:120;;923:71:72;;;4556:51:120;4623:18;;;4616:34;;;890:30:72;;4529:18:120;;923:71:72;;;-1:-1:-1;;923:71:72;;;;;;;;;;;;;;-1:-1:-1;;;;;923:71:72;-1:-1:-1;;;923:71:72;;;;-1:-1:-1;1012:58:72;;1034:16;1012:58;:::i;:::-;1052:17;1012:21;:58::i;:::-;1004:105;;;;-1:-1:-1;;;1004:105:72;;7649:2:120;1004:105:72;;;7631:21:120;7688:2;7668:18;;;7661:30;7727:34;7707:18;;;7700:62;-1:-1:-1;;;7778:18:120;;;7771:32;7820:19;;1004:105:72;;;;;;;;;1173:27;1183:8;1193:6;1173:9;:27::i;:::-;880:327;777:430;;;:::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;8052:2:120;2161:73:41::1;::::0;::::1;8034:21:120::0;8091:2;8071:18;;;8064:30;8130:34;8110:18;;;8103:62;-1:-1:-1;;;8181:18:120;;;8174:36;8227:19;;2161:73:41::1;7850:402:120::0;2161:73:41::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;8459:2:120;1414:68:41;;;8441:21:120;;;8478:18;;;8471:30;8537:34;8517:18;;;8510:62;8589:18;;1414:68:41;8257:356:120;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1272:712:79:-;1419:4;1435:16;1454:401;;;;;;;;1748:17;:24;;;1454:401;;;;1484:10;-1:-1:-1;;;;;1454:401:79;;;;;1524:4;-1:-1:-1;;;;;1454:401:79;;;;;1550:9;1454:401;;;;1592:18;1454:401;;;;1634:8;1454:401;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1454:401:79;;;-1:-1:-1;;1685:33:79;;;;;;:40;1454:401;;;;;;;;;;1807:37;;;1454:401;;;;;;;1873:14;;1913:33;;1948:28;;;;1873:104;;-1:-1:-1;;;1873:104:79;;1435:420;;-1:-1:-1;;;;;;1873:14:79;;;;:33;;:104;;1435:420;;1873:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1866:111;1272:712;-1:-1:-1;;;;1272:712:79:o;1262:283:72:-;1351:10;1342:20;;;;:8;:20;;;;;;:30;-1:-1:-1;1342:30:72;1334:73;;;;-1:-1:-1;;;1334:73:72;;11905:2:120;1334:73:72;;;11887:21:120;11944:2;11924:18;;;11917:30;11983:32;11963:18;;;11956:60;12033:18;;1334:73:72;11703:354:120;1334:73:72;1426:10;1417:20;;;;:8;:20;;;;;:30;;1441:6;;1417:20;:30;;1441:6;;1417:30;:::i;:::-;;;;-1:-1:-1;;;;;;;1457:18:72;;;;;;:8;:18;;;;;:28;;1479:6;;1457:18;:28;;1479:6;;1457:28;:::i;:::-;;;;-1:-1:-1;;1500:38:72;;529:25:120;;;-1:-1:-1;;;;;1500:38:72;;;1509:10;;1500:38;;517:2:120;502:18;1500:38:72;;;;;;;1262:283;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:120;82:20;;-1:-1:-1;;;;;131:31:120;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:120:o;798:127::-;859:10;854:3;850:20;847:1;840:31;890:4;887:1;880:15;914:4;911:1;904:15;930:253;1002:2;996:9;1044:4;1032:17;;1079:18;1064:34;;1100:22;;;1061:62;1058:88;;;1126:18;;:::i;:::-;1162:2;1155:22;930:253;:::o;1188:275::-;1259:2;1253:9;1324:2;1305:13;;-1:-1:-1;;1301:27:120;1289:40;;1359:18;1344:34;;1380:22;;;1341:62;1338:88;;;1406:18;;:::i;:::-;1442:2;1435:22;1188:275;;-1:-1:-1;1188:275:120:o;1468:407::-;1533:5;1567:18;1559:6;1556:30;1553:56;;;1589:18;;:::i;:::-;1627:57;1672:2;1651:15;;-1:-1:-1;;1647:29:120;1678:4;1643:40;1627:57;:::i;:::-;1618:66;;1707:6;1700:5;1693:21;1747:3;1738:6;1733:3;1729:16;1726:25;1723:45;;;1764:1;1761;1754:12;1723:45;1813:6;1808:3;1801:4;1794:5;1790:16;1777:43;1867:1;1860:4;1851:6;1844:5;1840:18;1836:29;1829:40;1468:407;;;;;:::o;1880:222::-;1923:5;1976:3;1969:4;1961:6;1957:17;1953:27;1943:55;;1994:1;1991;1984:12;1943:55;2016:80;2092:3;2083:6;2070:20;2063:4;2055:6;2051:17;2016:80;:::i;2107:322::-;2176:6;2229:2;2217:9;2208:7;2204:23;2200:32;2197:52;;;2245:1;2242;2235:12;2197:52;2285:9;2272:23;2318:18;2310:6;2307:30;2304:50;;;2350:1;2347;2340:12;2304:50;2373;2415:7;2406:6;2395:9;2391:22;2373:50;:::i;2751:472::-;2793:3;2831:5;2825:12;2858:6;2853:3;2846:19;2883:1;2893:162;2907:6;2904:1;2901:13;2893:162;;;2969:4;3025:13;;;3021:22;;3015:29;2997:11;;;2993:20;;2986:59;2922:12;2893:162;;;3073:6;3070:1;3067:13;3064:87;;;3139:1;3132:4;3123:6;3118:3;3114:16;3110:27;3103:38;3064:87;-1:-1:-1;3205:2:120;3184:15;-1:-1:-1;;3180:29:120;3171:39;;;;3212:4;3167:50;;2751:472;-1:-1:-1;;2751:472:120:o;3228:220::-;3377:2;3366:9;3359:21;3340:4;3397:45;3438:2;3427:9;3423:18;3415:6;3397:45;:::i;3453:539::-;3567:6;3575;3583;3636:2;3624:9;3615:7;3611:23;3607:32;3604:52;;;3652:1;3649;3642:12;3604:52;3675:29;3694:9;3675:29;:::i;:::-;3665:39;;3751:2;3740:9;3736:18;3723:32;3713:42;;3806:2;3795:9;3791:18;3778:32;3833:18;3825:6;3822:30;3819:50;;;3865:1;3862;3855:12;3819:50;3888:22;;3944:3;3926:16;;;3922:26;3919:46;;;3961:1;3958;3951:12;3919:46;3984:2;3974:12;;;3453:539;;;;;:::o;3997:380::-;4076:1;4072:12;;;;4119;;;4140:61;;4194:4;4186:6;4182:17;4172:27;;4140:61;4247:2;4239:6;4236:14;4216:18;4213:38;4210:161;;;4293:10;4288:3;4284:20;4281:1;4274:31;4328:4;4325:1;4318:15;4356:4;4353:1;4346:15;4210:161;;3997:380;;;:::o;4661:183::-;4721:4;4754:18;4746:6;4743:30;4740:56;;;4776:18;;:::i;:::-;-1:-1:-1;4821:1:120;4817:14;4833:4;4813:25;;4661:183::o;4849:1088::-;4901:5;4954:3;4947:4;4939:6;4935:17;4931:27;4921:55;;4972:1;4969;4962:12;4921:55;5008:6;4995:20;5034:4;5058:60;5074:43;5114:2;5074:43;:::i;:::-;5058:60;:::i;:::-;5152:15;;;5238:1;5234:10;;;;5222:23;;5218:32;;;5183:12;;;;5262:15;;;5259:35;;;5290:1;5287;5280:12;5259:35;5326:2;5318:6;5314:15;5338:570;5354:6;5349:3;5346:15;5338:570;;;5440:3;5427:17;5476:18;5463:11;5460:35;5457:125;;;5536:1;5565:2;5561;5554:14;5457:125;5605:24;;5664:2;5656:11;;5652:21;-1:-1:-1;5642:119:120;;5715:1;5744:2;5740;5733:14;5642:119;5786:79;5861:3;5855:2;5851;5847:11;5834:25;5829:2;5825;5821:11;5786:79;:::i;:::-;5774:92;;-1:-1:-1;5886:12:120;;;;5371;;5338:570;;;-1:-1:-1;5926:5:120;4849:1088;-1:-1:-1;;;;;;4849:1088:120:o;5942:1500::-;6064:9;6123:4;6115:5;6099:14;6095:26;6091:37;6088:57;;;6141:1;6138;6131:12;6088:57;6169:22;;:::i;:::-;6227:5;6214:19;6252:18;6293:2;6285:6;6282:14;6279:34;;;6309:1;6306;6299:12;6279:34;6338:53;6376:14;6367:6;6360:5;6356:18;6338:53;:::i;:::-;6329:7;6322:70;6411:2;6401:12;;6471:2;6464:5;6460:14;6447:28;6442:2;6433:7;6429:16;6422:54;6525:2;6518:5;6514:14;6501:28;6554:2;6544:8;6541:16;6538:36;;;6570:1;6567;6560:12;6538:36;6593:20;;6651:14;6644:4;6636:13;;6632:34;6622:62;;6680:1;6677;6670:12;6622:62;6716:2;6703:16;6739:60;6755:43;6795:2;6755:43;:::i;6739:60::-;6833:15;;;6915:1;6911:10;;;;6903:19;;6899:28;;;6864:12;;;;6950:14;6939:26;;6936:46;;;6978:1;6975;6968:12;6936:46;7002:11;;;;7022:148;7038:6;7033:3;7030:15;7022:148;;;7104:23;7123:3;7104:23;:::i;:::-;7092:36;;7055:12;;;;7148;;;;7022:148;;;7199:2;7186:16;;7179:31;-1:-1:-1;;;7259:2:120;7248:14;;7235:28;;-1:-1:-1;7275:16:120;;;7272:36;;;7304:1;7301;7294:12;7272:36;;7342:64;7391:14;7380:8;7373:5;7369:20;7342:64;:::i;:::-;7337:2;7324:16;;7317:90;-1:-1:-1;7328:7:120;5942:1500;-1:-1:-1;;5942:1500:120:o;8717:461::-;8770:3;8808:5;8802:12;8835:6;8830:3;8823:19;8861:4;8890:2;8885:3;8881:12;8874:19;;8927:2;8920:5;8916:14;8948:1;8958:195;8972:6;8969:1;8966:13;8958:195;;;9037:13;;-1:-1:-1;;;;;9033:39:120;9021:52;;9093:12;;;;9128:15;;;;9069:1;8987:9;8958:195;;;-1:-1:-1;9169:3:120;;8717:461;-1:-1:-1;;;;;8717:461:120:o;9183:566::-;9234:3;9272:5;9266:12;9299:6;9294:3;9287:19;9325:4;9354:2;9349:3;9345:12;9338:19;;9379:3;9419:6;9416:1;9412:14;9407:3;9403:24;9461:2;9454:5;9450:14;9482:1;9492:231;9506:6;9503:1;9500:13;9492:231;;;9577:5;9571:4;9567:16;9562:3;9555:29;9605:38;9638:4;9629:6;9623:13;9605:38;:::i;:::-;9701:12;;;;9597:46;-1:-1:-1;9666:15:120;;;;9528:1;9521:9;9492:231;;;-1:-1:-1;9739:4:120;;9183:566;-1:-1:-1;;;;;;;9183:566:120:o;9754:1662::-;10103:2;10092:9;10085:21;10066:4;10141:6;10135:13;10167:6;10209:2;10204;10193:9;10189:18;10182:30;10235:52;10282:3;10271:9;10267:19;10253:12;10235:52;:::i;:::-;10221:66;;10336:4;10328:6;10324:17;10318:24;10351:55;10401:3;10390:9;10386:19;10370:14;-1:-1:-1;;;;;2500:31:120;2488:44;;2434:104;10351:55;-1:-1:-1;10455:4:120;10443:17;;10437:24;-1:-1:-1;;;;;2500:31:120;10520:3;10505:19;;2488:44;10580:2;10568:15;;10562:22;10556:3;10541:19;;10534:51;10634:3;10622:16;;10616:23;10706:22;;;-1:-1:-1;;10702:31:120;;;10696:3;10681:19;;10674:60;10757:41;10710:6;10616:23;10757:41;:::i;:::-;10743:55;;10847:3;10839:6;10835:16;10829:23;10807:45;;10916:2;10904:9;10896:6;10892:22;10888:31;10883:2;10872:9;10868:18;10861:59;;10943:41;10977:6;10961:14;10943:41;:::i;:::-;10929:55;;;;11033:3;11025:6;11021:16;11015:23;11047:54;11096:3;11085:9;11081:19;11065:14;8694:10;8683:22;8671:35;;8618:94;11047:54;;11156:3;11148:6;11144:16;11138:23;11132:3;11121:9;11117:19;11110:52;11212:9;11204:6;11200:22;11193:4;11182:9;11178:20;11171:52;11246:44;11283:6;11275;11246:44;:::i;:::-;11232:58;;11340:9;11332:6;11328:22;11321:4;11310:9;11306:20;11299:52;11368:42;11403:6;11395;11368:42;:::i;:::-;11360:50;9754:1662;-1:-1:-1;;;;;;9754:1662:120:o;11421:277::-;11488:6;11541:2;11529:9;11520:7;11516:23;11512:32;11509:52;;;11557:1;11554;11547:12;11509:52;11589:9;11583:16;11642:5;11635:13;11628:21;11621:5;11618:32;11608:60;;11664:1;11661;11654:12;12062:127;12123:10;12118:3;12114:20;12111:1;12104:31;12154:4;12151:1;12144:15;12178:4;12175:1;12168:15;12194:125;12234:4;12262:1;12259;12256:8;12253:34;;;12267:18;;:::i;:::-;-1:-1:-1;12304:9:120;;12194:125::o;12324:128::-;12364:3;12395:1;12391:6;12388:1;12385:13;12382:39;;;12401:18;;:::i;:::-;-1:-1:-1;12437:9:120;;12324:128::o","linkReferences":{}},"methodIdentifiers":{"balances(address)":"27e235e3","getBalance(address)":"f8b2cb4f","owner()":"8da5cb5b","policyID()":"c6cf634b","renounceOwnership()":"715018a6","sendCoin(address,uint256,(string,uint256,address[],bytes[]))":"ee2453c6","serviceManager()":"3998fdd3","setPolicy(string)":"6b4c991b","setServiceManager(address)":"9b41bf23","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PredicateClient__Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"policyID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expireByBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"signerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"internalType\":\"struct PredicateMessage\",\"name\":\"predicateMessage\",\"type\":\"tuple\"}],\"name\":\"sendCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceManager\",\"outputs\":[{\"internalType\":\"contract IServiceManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceManager\",\"type\":\"address\"}],\"name\":\"setServiceManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setPolicy(string)\":{\"params\":{\"_policyID\":\"policy ID from onchain\"}},\"setServiceManager(address)\":{\"params\":{\"_serviceManager\":\"address of the service manager\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setPolicy(string)\":{\"notice\":\"Updates the policy ID\"},\"setServiceManager(address)\":{\"notice\":\"Internal function for setting the ServiceManager\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/examples/MetaCoin.sol\":\"MetaCoin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/examples/MetaCoin.sol\":{\"keccak256\":\"0x56de72766d422d7bb6dd42a58a912f980594430931ea556b5029309d695ff1ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edbba28269669b655bf8145040e181d9457f9a627d64b3177255a8e2bf5adacb\",\"dweb:/ipfs/Qmaa8UEmxVUEwXvve774zAqVgCx8tTVVaKkRg1KyXWUbw5\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"serviceManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"PredicateClient__Unauthorized"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","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":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"policyID","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"struct PredicateMessage","name":"predicateMessage","type":"tuple","components":[{"internalType":"string","name":"taskId","type":"string"},{"internalType":"uint256","name":"expireByBlockNumber","type":"uint256"},{"internalType":"address[]","name":"signerAddresses","type":"address[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}]}],"stateMutability":"nonpayable","type":"function","name":"sendCoin"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceManager","outputs":[{"internalType":"contract IServiceManager","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setPolicy"},{"inputs":[{"internalType":"address","name":"_serviceManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceManager"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setPolicy(string)":{"params":{"_policyID":"policy ID from onchain"}},"setServiceManager(address)":{"params":{"_serviceManager":"address of the service manager"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"setPolicy(string)":{"notice":"Updates the policy ID"},"setServiceManager(address)":{"notice":"Internal function for setting the ServiceManager"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/examples/MetaCoin.sol":"MetaCoin"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/examples/MetaCoin.sol":{"keccak256":"0x56de72766d422d7bb6dd42a58a912f980594430931ea556b5029309d695ff1ee","urls":["bzz-raw://edbba28269669b655bf8145040e181d9457f9a627d64b3177255a8e2bf5adacb","dweb:/ipfs/Qmaa8UEmxVUEwXvve774zAqVgCx8tTVVaKkRg1KyXWUbw5"],"license":"MIT"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"}},"version":1},"id":72} \ No newline at end of file diff --git a/out/MetaCoinWithRateLimit.sol/MetaCoinWithRateLimit.json b/out/MetaCoinWithRateLimit.sol/MetaCoinWithRateLimit.json new file mode 100644 index 00000000..1a4e13fb --- /dev/null +++ b/out/MetaCoinWithRateLimit.sol/MetaCoinWithRateLimit.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"SYMBOL","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"balances","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"bypassRateLimit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"checkIfLimitExceeds","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenID","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"disableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"evaluateRateLimit","inputs":[{"name":"tokenID","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRateLimitParams","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct RateLimitParams","components":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTxBatchAtPtr","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startBlockNumber","type":"uint256","internalType":"uint256"},{"name":"endBlockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTxHistory","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct TxHistory","components":[{"name":"total","type":"uint256","internalType":"uint256"},{"name":"ptr","type":"uint256","internalType":"uint256"},{"name":"txBatches","type":"tuple[]","internalType":"struct TxBatch[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startBlockNumber","type":"uint256","internalType":"uint256"},{"name":"endBlockNumber","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"isRateLimiterEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPriceAggregator"}],"stateMutability":"view"},{"type":"function","name":"rateLimitParams","inputs":[],"outputs":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"removeRateLimitBypass","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sendCoin","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"_priceOracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRateLimitBypass","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRateLimitParams","inputs":[{"name":"params","type":"tuple","internalType":"struct RateLimitParams","components":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txHistory","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"},{"name":"ptr","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RateLimitExceeded","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"string","indexed":false,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RateLimitParamsUpdated","inputs":[{"name":"maxAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"duration","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"batchSize","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"error","name":"InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"requested","type":"uint256","internalType":"uint256"},{"name":"available","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidBatchSize","inputs":[{"name":"provided","type":"uint64","internalType":"uint64"},{"name":"minimum","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"InvalidDuration","inputs":[{"name":"provided","type":"uint256","internalType":"uint256"},{"name":"minimum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidMaxAmount","inputs":[{"name":"provided","type":"uint256","internalType":"uint256"},{"name":"minimum","type":"uint256","internalType":"uint256"},{"name":"maximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PredicateClient_IsRateLimited","inputs":[]},{"type":"error","name":"RateLimiter_InvalidToken","inputs":[]},{"type":"error","name":"TokenNotSupported","inputs":[{"name":"token","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001a33610037565b3360009081526008602052604090206509184e72a0009055610087565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6118a7806100966000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063c60c06461161007c578063c60c06461461036a578063daf42d6c1461037d578063ed5f43b714610390578063f2fde38b146103b3578063f76f8d78146103c6578063f8b2cb4f146103f657600080fd5b8063715018a6146102fb5780638da5cb5b1461030357806390b98a1114610314578063a8ca896414610327578063b74437a51461035a578063c47f1ac31461036257600080fd5b80632cc5b108116101155780632cc5b1081461022f5780632e6c02e3146102595780632f53036e14610298578063530e784f146102b55780635e89c3f4146102c85780637012b1d4146102db57600080fd5b80630a6d4d5814610152578063112f6a31146101935780632630c12f146101c157806327e235e3146101ec578063286df6b71461021a575b600080fd5b61017961016036600461138e565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152015b60405180910390f35b6101a66101a136600461138e565b61041f565b6040805193845260208401929092529082015260600161018a565b6007546101d4906001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b61020c6101fa36600461138e565b60086020526000908152604090205481565b60405190815260200161018a565b61022d61022836600461138e565b610513565b005b61024261023d3660046113f1565b61053f565b60408051921515835260208301919091520161018a565b6004546005546006546102749291906001600160401b031683565b6040805193845260208401929092526001600160401b03169082015260600161018a565b6003546102a59060ff1681565b604051901515815260200161018a565b61022d6102c336600461138e565b61063f565b6102a56102d636600461144a565b610669565b6102ee6102e936600461138e565b610847565b60405161018a9190611495565b61022d61091b565b6000546001600160a01b03166101d4565b61022d610322366004611512565b61092f565b61032f610a21565b604080518251815260208084015190820152918101516001600160401b03169082015260600161018a565b61022d610a7c565b61022d610a90565b61022d61037836600461138e565b610aa7565b61022d61038b36600461153c565b610ad0565b6102a561039e36600461138e565b60026020526000908152604090205460ff1681565b61022d6103c136600461138e565b610c32565b6103e9604051806040016040528060048152602001634d45544160e01b81525081565b60405161018a91906115a1565b61020c61040436600461138e565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b0381166000908152600160208181526040808420815160608101835281548152938101548484015260028101805483518186028101860185528181528796879687969195949186019390879084015b828210156104c55783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610475565b50505050815250509050600081604001518260200151815181106104eb576104eb6115b4565b6020026020010151905080600001518160200151826040015194509450945050509193909250565b61051b610cab565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b60008080610568610552600660126115e0565b61055d90600a6116db565b8590620f4240610d05565b600754604051630bbceb3360e21b81529192506000916105f5916001600160a01b031690632ef3accc906105a4908b908b908b90600401611710565b602060405180830381865afa1580156105c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e59190611734565b8390670de0b6b3a7640000610d05565b90506000610620610608600660126115e0565b61061390600a6116db565b60045490620f4240610d05565b905061062f8989898585610d23565b9450945050505094509492505050565b610647610cab565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008061069161067b600660126115e0565b61068690600a6116db565b8490620f4240610d05565b600754604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc906106cb90899089908990600401611710565b602060405180830381865afa1580156106e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070c9190611734565b600754604051630bbceb3360e21b8152919250600091610799916001600160a01b031690632ef3accc90610748908b908b908b90600401611710565b602060405180830381865afa158015610765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107899190611734565b8490670de0b6b3a7640000610d05565b905060006107ac610608600660126115e0565b905060006107bd338a8a8686610d23565b50905080156108155760045460405133917fe2274a8e4f5712295a052754df3513686fd79e6fe1e6dbdd609b8b0b1fbc133c916107ff918d918d918d9161174d565b60405180910390a2600095505050505050610840565b600061082043610e06565b905061082b81610e2d565b6108354385610ed9565b600196505050505050505b9392505050565b61086b60405180606001604052806000815260200160008152602001606081525090565b6001600160a01b03821660009081526001602081815260408084208151606081018352815481529381015484840152600281018054835181860281018601855281815295969295938701949192909184015b8282101561090d57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906108bd565b505050915250909392505050565b610923610cab565b61092d6000610f11565b565b6040805180820182526004808252634d45544160e01b602083015291516317a270fd60e21b81523092635e89c3f49261096c929091869101611774565b6020604051808303816000875af115801561098b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109af9190611796565b610a135760405162461bcd60e51b815260206004820152602a60248201527f4d657461436f696e57697468526174654c696d69743a2072617465206c696d696044820152691d08195e18d95959195960b21b60648201526084015b60405180910390fd5b610a1d8282610f61565b5050565b610a4e6040518060600160405280600081526020016000815260200160006001600160401b031681525090565b5060408051606081018252600454815260055460208201526006546001600160401b03169181019190915290565b610a84610cab565b6003805460ff19169055565b610a98610cab565b6003805460ff19166001179055565b610aaf610cab565b6001600160a01b03166000908152600260205260409020805460ff19169055565b610ad8610cab565b620f424081351080610aef575064e8d4a510008135115b15610b2457604051638b39eb3360e01b815281356004820152620f4240602482015264e8d4a510006044820152606401610a0a565b600181602001351015610b575760405163387a058b60e01b81526020820135600482015260016024820152604401610a0a565b6001610b6960608301604084016117cd565b6001600160401b03161015610bb457610b8860608201604083016117cd565b604051630161019760e01b81526001600160401b03909116600482015260016024820152604401610a0a565b806004610bc182826117ea565b50506003805460ff191660011790557fdf1f77551f6fd65be59ba5210e34eba28a083b1e076a140cd029c3b0794d574f81356020830135610c0860608501604086016117cd565b6040805193845260208401929092526001600160401b03169082015260600160405180910390a150565b610c3a610cab565b6001600160a01b038116610c9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a0a565b610ca881610f11565b50565b6000546001600160a01b0316331461092d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a0a565b6000826000190484118302158202610d1c57600080fd5b5091020490565b60075460405163034d94bb60e21b815260009182916001600160a01b0390911690630d3652ec90610d5a908990899060040161182a565b602060405180830381865afa158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9b9190611796565b610dbc57858560405163c16fc3ad60e01b8152600401610a0a92919061182a565b6000610dc743610e06565b90506000610dd58983611047565b90506000610de58a838989611194565b90506000610df58b848a8a6111fd565b9b919a509098505050505050505050565b6005546000908210610e2457600554610e1f90836115e0565b610e27565b60005b92915050565b3360009081526001602081905260409091208054918101549091905b600283015481108015610e82575083836002018281548110610e6d57610e6d6115b4565b90600052602060002090600302016002015411155b15610ecd57826002018181548110610e9c57610e9c6115b4565b90600052602060002090600302016000015482610eb991906115e0565b915080610ec58161183e565b915050610e49565b90825560019091015550565b336000908152600160205260409020610ef28184611236565b15610f0657610f018183611284565b505050565b610f018184846112eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33600090815260086020526040902054811115610fb257336000818152600860205260409081902054905163db42144d60e01b81526004810192909252602482018390526044820152606401610a0a565b3360009081526008602052604081208054839290610fd19084906115e0565b90915550506001600160a01b03821660009081526008602052604081208054839290610ffe908490611859565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216600090815260016020818152604080842081516060810183528154815293810154848401526002810180548351818602810186018552818152879695939486019390929190879084015b828210156110eb578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250508152602001906001019061109b565b50505091525050604081015151909150611109576000915050610e27565b805160208201515b8260400151518110801561114557508483604001518281518110611137576111376115b4565b602002602001015160400151105b1561118b5782604001518181518110611160576111606115b4565b6020026020010151600001518261117791906115e0565b9150806111838161183e565b915050611111565b50949350505050565b6001600160a01b03841660009081526002602052604081205460ff16156111bc5750806111f5565b816111c78486611859565b116111e857826111d785846115e0565b6111e191906115e0565b90506111f5565b6111f284836115e0565b90505b949350505050565b6001600160a01b03841660009081526002602052604081205460ff161580156111f257508161122c8486611859565b1195945050505050565b6002820154600090158015906108405750600283018054611259906001906115e0565b81548110611269576112696115b4565b90600052602060002090600302016002015482109392505050565b600282018054829190611299906001906115e0565b815481106112a9576112a96115b4565b906000526020600020906003020160000160008282546112c99190611859565b90915550508154819083906000906112e2908490611859565b90915550505050565b604080516060810182528281526020810184905260065460009282019061131b906001600160401b031686611859565b9052600280860180546001818101835560009283526020808420865160039094020192835585015190820155604084015192019190915585549192508391869190611367908490611859565b909155505050505050565b80356001600160a01b038116811461138957600080fd5b919050565b6000602082840312156113a057600080fd5b61084082611372565b60008083601f8401126113bb57600080fd5b5081356001600160401b038111156113d257600080fd5b6020830191508360208285010111156113ea57600080fd5b9250929050565b6000806000806060858703121561140757600080fd5b61141085611372565b935060208501356001600160401b0381111561142b57600080fd5b611437878288016113a9565b9598909750949560400135949350505050565b60008060006040848603121561145f57600080fd5b83356001600160401b0381111561147557600080fd5b611481868287016113a9565b909790965060209590950135949350505050565b600060208083526080830184518285015281850151604081818701528087015191506060808188015283835180865260a0890191508685019550600094505b80851015611505578551805183528781015188840152840151848301529486019460019490940193908201906114d4565b5098975050505050505050565b6000806040838503121561152557600080fd5b61152e83611372565b946020939093013593505050565b60006060828403121561154e57600080fd5b50919050565b6000815180845260005b8181101561157a5760208185018101518683018201520161155e565b8181111561158c576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006108406020830184611554565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156115f2576115f26115ca565b500390565b600181815b80851115611632578160001904821115611618576116186115ca565b8085161561162557918102915b93841c93908002906115fc565b509250929050565b60008261164957506001610e27565b8161165657506000610e27565b816001811461166c576002811461167657611692565b6001915050610e27565b60ff841115611687576116876115ca565b50506001821b610e27565b5060208310610133831016604e8410600b84101617156116b5575081810a610e27565b6116bf83836115f7565b80600019048211156116d3576116d36115ca565b029392505050565b6000610840838361163a565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006117246040830185876116e7565b9050826020830152949350505050565b60006020828403121561174657600080fd5b5051919050565b6060815260006117616060830186886116e7565b6020830194909452506040015292915050565b6040815260006117876040830185611554565b90508260208301529392505050565b6000602082840312156117a857600080fd5b8151801515811461084057600080fd5b6001600160401b0381168114610ca857600080fd5b6000602082840312156117df57600080fd5b8135610840816117b8565b813581556020820135600182015560028101604083013561180a816117b8565b815467ffffffffffffffff19166001600160401b03919091161790555050565b6020815260006111f56020830184866116e7565b6000600019821415611852576118526115ca565b5060010190565b6000821982111561186c5761186c6115ca565b50019056fea26469706673582212207bfd1630aac8f75b472abb49d0000e05cbdf95a5b986749d32409712bfa1946364736f6c634300080c0033","sourceMap":"171:1092:73:-:0;;;484:72;;;;;;;;;-1:-1:-1;936:32:41;719:10:52;936:18:41;:32::i;:::-;517:10:73;508:20;;;;:8;:20;;;;;531:18;508:41;;171:1092;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;171:1092:73:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063c60c06461161007c578063c60c06461461036a578063daf42d6c1461037d578063ed5f43b714610390578063f2fde38b146103b3578063f76f8d78146103c6578063f8b2cb4f146103f657600080fd5b8063715018a6146102fb5780638da5cb5b1461030357806390b98a1114610314578063a8ca896414610327578063b74437a51461035a578063c47f1ac31461036257600080fd5b80632cc5b108116101155780632cc5b1081461022f5780632e6c02e3146102595780632f53036e14610298578063530e784f146102b55780635e89c3f4146102c85780637012b1d4146102db57600080fd5b80630a6d4d5814610152578063112f6a31146101935780632630c12f146101c157806327e235e3146101ec578063286df6b71461021a575b600080fd5b61017961016036600461138e565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152015b60405180910390f35b6101a66101a136600461138e565b61041f565b6040805193845260208401929092529082015260600161018a565b6007546101d4906001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b61020c6101fa36600461138e565b60086020526000908152604090205481565b60405190815260200161018a565b61022d61022836600461138e565b610513565b005b61024261023d3660046113f1565b61053f565b60408051921515835260208301919091520161018a565b6004546005546006546102749291906001600160401b031683565b6040805193845260208401929092526001600160401b03169082015260600161018a565b6003546102a59060ff1681565b604051901515815260200161018a565b61022d6102c336600461138e565b61063f565b6102a56102d636600461144a565b610669565b6102ee6102e936600461138e565b610847565b60405161018a9190611495565b61022d61091b565b6000546001600160a01b03166101d4565b61022d610322366004611512565b61092f565b61032f610a21565b604080518251815260208084015190820152918101516001600160401b03169082015260600161018a565b61022d610a7c565b61022d610a90565b61022d61037836600461138e565b610aa7565b61022d61038b36600461153c565b610ad0565b6102a561039e36600461138e565b60026020526000908152604090205460ff1681565b61022d6103c136600461138e565b610c32565b6103e9604051806040016040528060048152602001634d45544160e01b81525081565b60405161018a91906115a1565b61020c61040436600461138e565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b0381166000908152600160208181526040808420815160608101835281548152938101548484015260028101805483518186028101860185528181528796879687969195949186019390879084015b828210156104c55783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610475565b50505050815250509050600081604001518260200151815181106104eb576104eb6115b4565b6020026020010151905080600001518160200151826040015194509450945050509193909250565b61051b610cab565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b60008080610568610552600660126115e0565b61055d90600a6116db565b8590620f4240610d05565b600754604051630bbceb3360e21b81529192506000916105f5916001600160a01b031690632ef3accc906105a4908b908b908b90600401611710565b602060405180830381865afa1580156105c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e59190611734565b8390670de0b6b3a7640000610d05565b90506000610620610608600660126115e0565b61061390600a6116db565b60045490620f4240610d05565b905061062f8989898585610d23565b9450945050505094509492505050565b610647610cab565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008061069161067b600660126115e0565b61068690600a6116db565b8490620f4240610d05565b600754604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc906106cb90899089908990600401611710565b602060405180830381865afa1580156106e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070c9190611734565b600754604051630bbceb3360e21b8152919250600091610799916001600160a01b031690632ef3accc90610748908b908b908b90600401611710565b602060405180830381865afa158015610765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107899190611734565b8490670de0b6b3a7640000610d05565b905060006107ac610608600660126115e0565b905060006107bd338a8a8686610d23565b50905080156108155760045460405133917fe2274a8e4f5712295a052754df3513686fd79e6fe1e6dbdd609b8b0b1fbc133c916107ff918d918d918d9161174d565b60405180910390a2600095505050505050610840565b600061082043610e06565b905061082b81610e2d565b6108354385610ed9565b600196505050505050505b9392505050565b61086b60405180606001604052806000815260200160008152602001606081525090565b6001600160a01b03821660009081526001602081815260408084208151606081018352815481529381015484840152600281018054835181860281018601855281815295969295938701949192909184015b8282101561090d57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906108bd565b505050915250909392505050565b610923610cab565b61092d6000610f11565b565b6040805180820182526004808252634d45544160e01b602083015291516317a270fd60e21b81523092635e89c3f49261096c929091869101611774565b6020604051808303816000875af115801561098b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109af9190611796565b610a135760405162461bcd60e51b815260206004820152602a60248201527f4d657461436f696e57697468526174654c696d69743a2072617465206c696d696044820152691d08195e18d95959195960b21b60648201526084015b60405180910390fd5b610a1d8282610f61565b5050565b610a4e6040518060600160405280600081526020016000815260200160006001600160401b031681525090565b5060408051606081018252600454815260055460208201526006546001600160401b03169181019190915290565b610a84610cab565b6003805460ff19169055565b610a98610cab565b6003805460ff19166001179055565b610aaf610cab565b6001600160a01b03166000908152600260205260409020805460ff19169055565b610ad8610cab565b620f424081351080610aef575064e8d4a510008135115b15610b2457604051638b39eb3360e01b815281356004820152620f4240602482015264e8d4a510006044820152606401610a0a565b600181602001351015610b575760405163387a058b60e01b81526020820135600482015260016024820152604401610a0a565b6001610b6960608301604084016117cd565b6001600160401b03161015610bb457610b8860608201604083016117cd565b604051630161019760e01b81526001600160401b03909116600482015260016024820152604401610a0a565b806004610bc182826117ea565b50506003805460ff191660011790557fdf1f77551f6fd65be59ba5210e34eba28a083b1e076a140cd029c3b0794d574f81356020830135610c0860608501604086016117cd565b6040805193845260208401929092526001600160401b03169082015260600160405180910390a150565b610c3a610cab565b6001600160a01b038116610c9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a0a565b610ca881610f11565b50565b6000546001600160a01b0316331461092d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a0a565b6000826000190484118302158202610d1c57600080fd5b5091020490565b60075460405163034d94bb60e21b815260009182916001600160a01b0390911690630d3652ec90610d5a908990899060040161182a565b602060405180830381865afa158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9b9190611796565b610dbc57858560405163c16fc3ad60e01b8152600401610a0a92919061182a565b6000610dc743610e06565b90506000610dd58983611047565b90506000610de58a838989611194565b90506000610df58b848a8a6111fd565b9b919a509098505050505050505050565b6005546000908210610e2457600554610e1f90836115e0565b610e27565b60005b92915050565b3360009081526001602081905260409091208054918101549091905b600283015481108015610e82575083836002018281548110610e6d57610e6d6115b4565b90600052602060002090600302016002015411155b15610ecd57826002018181548110610e9c57610e9c6115b4565b90600052602060002090600302016000015482610eb991906115e0565b915080610ec58161183e565b915050610e49565b90825560019091015550565b336000908152600160205260409020610ef28184611236565b15610f0657610f018183611284565b505050565b610f018184846112eb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33600090815260086020526040902054811115610fb257336000818152600860205260409081902054905163db42144d60e01b81526004810192909252602482018390526044820152606401610a0a565b3360009081526008602052604081208054839290610fd19084906115e0565b90915550506001600160a01b03821660009081526008602052604081208054839290610ffe908490611859565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216600090815260016020818152604080842081516060810183528154815293810154848401526002810180548351818602810186018552818152879695939486019390929190879084015b828210156110eb578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250508152602001906001019061109b565b50505091525050604081015151909150611109576000915050610e27565b805160208201515b8260400151518110801561114557508483604001518281518110611137576111376115b4565b602002602001015160400151105b1561118b5782604001518181518110611160576111606115b4565b6020026020010151600001518261117791906115e0565b9150806111838161183e565b915050611111565b50949350505050565b6001600160a01b03841660009081526002602052604081205460ff16156111bc5750806111f5565b816111c78486611859565b116111e857826111d785846115e0565b6111e191906115e0565b90506111f5565b6111f284836115e0565b90505b949350505050565b6001600160a01b03841660009081526002602052604081205460ff161580156111f257508161122c8486611859565b1195945050505050565b6002820154600090158015906108405750600283018054611259906001906115e0565b81548110611269576112696115b4565b90600052602060002090600302016002015482109392505050565b600282018054829190611299906001906115e0565b815481106112a9576112a96115b4565b906000526020600020906003020160000160008282546112c99190611859565b90915550508154819083906000906112e2908490611859565b90915550505050565b604080516060810182528281526020810184905260065460009282019061131b906001600160401b031686611859565b9052600280860180546001818101835560009283526020808420865160039094020192835585015190820155604084015192019190915585549192508391869190611367908490611859565b909155505050505050565b80356001600160a01b038116811461138957600080fd5b919050565b6000602082840312156113a057600080fd5b61084082611372565b60008083601f8401126113bb57600080fd5b5081356001600160401b038111156113d257600080fd5b6020830191508360208285010111156113ea57600080fd5b9250929050565b6000806000806060858703121561140757600080fd5b61141085611372565b935060208501356001600160401b0381111561142b57600080fd5b611437878288016113a9565b9598909750949560400135949350505050565b60008060006040848603121561145f57600080fd5b83356001600160401b0381111561147557600080fd5b611481868287016113a9565b909790965060209590950135949350505050565b600060208083526080830184518285015281850151604081818701528087015191506060808188015283835180865260a0890191508685019550600094505b80851015611505578551805183528781015188840152840151848301529486019460019490940193908201906114d4565b5098975050505050505050565b6000806040838503121561152557600080fd5b61152e83611372565b946020939093013593505050565b60006060828403121561154e57600080fd5b50919050565b6000815180845260005b8181101561157a5760208185018101518683018201520161155e565b8181111561158c576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006108406020830184611554565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156115f2576115f26115ca565b500390565b600181815b80851115611632578160001904821115611618576116186115ca565b8085161561162557918102915b93841c93908002906115fc565b509250929050565b60008261164957506001610e27565b8161165657506000610e27565b816001811461166c576002811461167657611692565b6001915050610e27565b60ff841115611687576116876115ca565b50506001821b610e27565b5060208310610133831016604e8410600b84101617156116b5575081810a610e27565b6116bf83836115f7565b80600019048211156116d3576116d36115ca565b029392505050565b6000610840838361163a565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006117246040830185876116e7565b9050826020830152949350505050565b60006020828403121561174657600080fd5b5051919050565b6060815260006117616060830186886116e7565b6020830194909452506040015292915050565b6040815260006117876040830185611554565b90508260208301529392505050565b6000602082840312156117a857600080fd5b8151801515811461084057600080fd5b6001600160401b0381168114610ca857600080fd5b6000602082840312156117df57600080fd5b8135610840816117b8565b813581556020820135600182015560028101604083013561180a816117b8565b815467ffffffffffffffff19166001600160401b03919091161790555050565b6020815260006111f56020830184866116e7565b6000600019821415611852576118526115ca565b5060010190565b6000821982111561186c5761186c6115ca565b50019056fea26469706673582212207bfd1630aac8f75b472abb49d0000e05cbdf95a5b986749d32409712bfa1946364736f6c634300080c0033","sourceMap":"171:1092:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:46:80;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;557:25:120;;;613:2;598:18;;591:34;;;;530:18;1966:46:80;;;;;;;;10699:341;;;;;;:::i;:::-;;:::i;:::-;;;;838:25:120;;;894:2;879:18;;872:34;;;;922:18;;;915:34;826:2;811:18;10699:341:80;636:319:120;2155:35:80;;;;;-1:-1:-1;;;;;2155:35:80;;;;;;-1:-1:-1;;;;;1150:32:120;;;1132:51;;1120:2;1105:18;2155:35:80;960:229:120;223:43:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1340:25:120;;;1328:2;1313:18;223:43:73;1194:177:120;4059:120:80;;;;;;:::i;:::-;;:::i;:::-;;7693:522;;;;;;:::i;:::-;;:::i;:::-;;;;2480:14:120;;2473:22;2455:41;;2527:2;2512:18;;2505:34;;;;2428:18;7693:522:80;2287:258:120;2111:38:80;;;;;;;;;;;-1:-1:-1;;;;;2111:38:80;;;;;;;2750:25:120;;;2806:2;2791:18;;2784:34;;;;-1:-1:-1;;;;;2854:31:120;2834:18;;;2827:59;2738:2;2723:18;2111:38:80;2550:342:120;2072:32:80;;;;;;;;;;;;3062:14:120;;3055:22;3037:41;;3025:2;3010:18;2072:32:80;2897:187:120;4657:140:80;;;;;;:::i;:::-;;:::i;5577:902::-;;;;;;:::i;:::-;;:::i;2763:130::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1831:101:41:-;;;:::i;1201:85::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;562:234:73;;;;;;:::i;:::-;;:::i;2397:116:80:-;;;:::i;:::-;;;;5331:13:120;;5313:32;;5401:4;5389:17;;;5383:24;5361:20;;;5354:54;5456:17;;;5450:24;-1:-1:-1;;;;;5446:49:120;5424:20;;;5417:79;5301:2;5286:18;2397:116:80;5099:403:120;5114:94:80;;;:::i;4909:92::-;;;:::i;4343:124::-;;;;;;:::i;:::-;;:::i;3144:710::-;;;;;;:::i;:::-;;:::i;2018:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2081:198:41;;;;;;:::i;:::-;;:::i;272:38:73:-;;;;;;;;;;;;;;;-1:-1:-1;;;272:38:73;;;;;;;;;;;;:::i;1145:116::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1240:14:73;1214:7;1240:14;;;:8;:14;;;;;;;1145:116;10699:341:80;-1:-1:-1;;;;;10878:15:80;;10775:14;10878:15;;;:9;:15;;;;;;;;10851:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10775:14;;;;;;10851:42;;10878:15;10851:42;;;;;10775:14;;10851:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10903:20;10926:7;:17;;;10944:7;:11;;;10926:30;;;;;;;;:::i;:::-;;;;;;;10903:53;;10974:5;:12;;;10988:5;:22;;;11012:5;:20;;;10966:67;;;;;;;;10699:341;;;;;:::o;4059:120::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;;;4144:21:80::1;;::::0;;;:15:::1;:21;::::0;;;;:28;;-1:-1:-1;;4144:28:80::1;4168:4;4144:28;::::0;;4059:120::o;7693:522::-;7832:4;;;7880:49;1744:28;1688:1;1639:2;1744:28;:::i;:::-;1737:36;;:2;:36;:::i;:::-;7880:6;;1590:3;7880:17;:49::i;:::-;7982:11;;:37;;-1:-1:-1;;;7982:37:80;;7857:72;;-1:-1:-1;7939:16:80;;7958:77;;-1:-1:-1;;;;;7982:11:80;;:20;;:37;;8003:7;;;;8012:6;;7982:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7958:12;;1538:4;7958:23;:77::i;:::-;7939:96;-1:-1:-1;8045:17:80;8065:68;1744:28;1688:1;1639:2;1744:28;:::i;:::-;1737:36;;:2;:36;:::i;:::-;8065:15;:25;;1590:3;8065:36;:68::i;:::-;8045:88;;8150:58;8171:6;8179:7;;8188:8;8198:9;8150:20;:58::i;:::-;8143:65;;;;;;;7693:522;;;;;;;:::o;4657:140::-;1094:13:41;:11;:13::i;:::-;4746:11:80::1;:44:::0;;-1:-1:-1;;;;;;4746:44:80::1;-1:-1:-1::0;;;;;4746:44:80;;;::::1;::::0;;;::::1;::::0;;4657:140::o;5577:902::-;5663:4;;5702:49;1744:28;1688:1;1639:2;1744:28;:::i;:::-;1737:36;;:2;:36;:::i;:::-;5702:6;;1590:3;5702:17;:49::i;:::-;5777:11;;:37;;-1:-1:-1;;;5777:37:80;;5679:72;;-1:-1:-1;5761:13:80;;-1:-1:-1;;;;;5777:11:80;;;;:20;;:37;;5798:7;;;;5807:6;;5777:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5867:11;;:37;;-1:-1:-1;;;5867:37:80;;5761:53;;-1:-1:-1;5824:16:80;;5843:77;;-1:-1:-1;;;;;5867:11:80;;:20;;:37;;5888:7;;;;5897:6;;5867:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5843:12;;1538:4;5843:23;:77::i;:::-;5824:96;-1:-1:-1;5930:17:80;5950:68;1744:28;1688:1;1639:2;1744:28;:::i;5950:68::-;5930:88;;6029:18;6052:62;6073:10;6085:7;;6094:8;6104:9;6052:20;:62::i;:::-;6028:86;;;6128:13;6124:148;;;6209:15;:25;6162:73;;6180:10;;6162:73;;;;6192:7;;;;6201:6;;6162:73;:::i;:::-;;;;;;;;6256:5;6249:12;;;;;;;;;6124:148;6281:27;6311:37;6335:12;6311:23;:37::i;:::-;6281:67;;6358:43;6381:19;6358:22;:43::i;:::-;6411:40;6428:12;6442:8;6411:16;:40::i;:::-;6468:4;6461:11;;;;;;;;5577:902;;;;;;:::o;2763:130::-;2836:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;2836:16:80;-1:-1:-1;;;;;2871:15:80;;;;;;:9;:15;;;;;;;;2864:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2871:15;;2864:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2864:22:80;;-1:-1:-1;2864:22:80;;2763:130;-1:-1:-1;;;2763:130:80:o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;562:234:73:-;659:6;;;;;;;;;;;;-1:-1:-1;;;659:6:73;;;;636:38;;-1:-1:-1;;;636:38:73;;:4;;:22;;:38;;659:6;;667;;636:38;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;631:122;;690:52;;-1:-1:-1;;;690:52:73;;10142:2:120;690:52:73;;;10124:21:120;10181:2;10161:18;;;10154:30;10220:34;10200:18;;;10193:62;-1:-1:-1;;;10271:18:120;;;10264:40;10321:19;;690:52:73;;;;;;;;631:122;762:27;772:8;782:6;762:9;:27::i;:::-;562:234;;:::o;2397:116:80:-;2450:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2450:22:80;-1:-1:-1;2484:22:80;;;;;;;;2491:15;2484:22;;;;;;;;;;;-1:-1:-1;;;;;2484:22:80;;;;;;;;;2397:116::o;5114:94::-;1094:13:41;:11;:13::i;:::-;5173:20:80::1;:28:::0;;-1:-1:-1;;5173:28:80::1;::::0;;5114:94::o;4909:92::-;1094:13:41;:11;:13::i;:::-;4967:20:80::1;:27:::0;;-1:-1:-1;;4967:27:80::1;4990:4;4967:27;::::0;;4909:92::o;4343:124::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;;;4431:21:80::1;4455:5;4431:21:::0;;;:15:::1;:21;::::0;;;;:29;;-1:-1:-1;;4431:29:80::1;::::0;;4343:124::o;3144:710::-;1094:13:41;:11;:13::i;:::-;1339:3:80::1;3252:16:::0;::::1;:35;::::0;:74:::1;;-1:-1:-1::0;1392:4:80::1;3291:16:::0;::::1;:35;3252:74;3248:182;;;3349:70;::::0;-1:-1:-1;;;3349:70:80;;3366:16;::::1;3349:70;::::0;::::1;838:25:120::0;1339:3:80::1;879:18:120::0;;;872:34;1392:4:80::1;922:18:120::0;;;915:34;811:18;;3349:70:80::1;636:319:120::0;3248:182:80::1;1442:1;3444:6;:15;;;:30;3440:114;;;3497:46;::::0;-1:-1:-1;;;3497:46:80;;3513:15:::1;::::0;::::1;;3497:46;::::0;::::1;557:25:120::0;1442:1:80::1;598:18:120::0;;;591:34;530:18;;3497:46:80::1;383:248:120::0;3440:114:80::1;1490:1;3568:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;3568:33:80::1;;3564:121;;;3641:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;3624:50;::::0;-1:-1:-1;;;3624:50:80;;-1:-1:-1;;;;;10960:15:120;;;3624:50:80::1;::::0;::::1;10942:34:120::0;1490:1:80::1;10992:18:120::0;;;10985:43;10878:18;;3624:50:80::1;10735:299:120::0;3564:121:80::1;3713:6:::0;3695:15:::1;:24;3713:6:::0;3695:15;:24:::1;:::i;:::-;-1:-1:-1::0;;3729:20:80::1;:27:::0;;-1:-1:-1;;3729:27:80::1;3752:4;3729:27;::::0;;3772:75:::1;3795:16:::0;::::1;3813:15;::::0;::::1;;3830:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;3772:75;::::0;;2750:25:120;;;2806:2;2791:18;;2784:34;;;;-1:-1:-1;;;;;2854:31:120;2834:18;;;2827:59;2738:2;2723:18;3772:75:80::1;;;;;;;3144:710:::0;:::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;11745:2:120;2161:73:41::1;::::0;::::1;11727:21:120::0;11784:2;11764:18;;;11757:30;11823:34;11803:18;;;11796:62;-1:-1:-1;;;11874:18:120;;;11867:36;11920:19;;2161:73:41::1;11543:402:120::0;2161:73:41::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;12152:2:120;1414:68:41;;;12134:21:120;;;12171:18;;;12164:30;12230:34;12210:18;;;12203:62;12282:18;;1414:68:41;11950:356:120;1564:526:56;1680:9;1928:1;-1:-1:-1;;1911:19:56;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:56;;2047:27;;1564:526::o;6974:713:80:-;7171:11;;:35;;-1:-1:-1;;;7171:35:80;;7141:4;;;;-1:-1:-1;;;;;7171:11:80;;;;:28;;:35;;7200:5;;;;7171:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7166:98;;7247:5;;7229:24;;-1:-1:-1;;;7229:24:80;;;;;;;;;:::i;7166:98::-;7273:27;7303:37;7327:12;7303:23;:37::i;:::-;7273:67;;7350:26;7379:51;7402:6;7410:19;7379:22;:51::i;:::-;7350:80;;7440:26;7469:71;7492:6;7500:18;7520:8;7530:9;7469:22;:71::i;:::-;7440:100;;7550:13;7566:66;7584:6;7592:18;7612:8;7622:9;7566:17;:66::i;:::-;7550:82;7661:18;;-1:-1:-1;6974:713:80;;-1:-1:-1;;;;;;;;;6974:713:80:o;11046:206::-;11176:24;;11136:7;;11162:38;;:83;;11221:24;;11207:38;;:11;:38;:::i;:::-;11162:83;;;11203:1;11162:83;11155:90;11046:206;-1:-1:-1;;11046:206:80:o;9323:476::-;9455:10;9417:25;9445:21;;;:9;:21;;;;;;;;9492:13;;9529:11;;;;9445:21;;9492:13;9550:185;9563:17;;;:24;9557:30;;:94;;;;;9632:19;9591:7;:17;;9609:3;9591:22;;;;;;;;:::i;:::-;;;;;;;;;;;:37;;;:60;;9557:94;9550:185;;;9676:7;:17;;9694:3;9676:22;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;;9667:38;;;;;:::i;:::-;;-1:-1:-1;9719:5:80;;;;:::i;:::-;;;;9550:185;;;9744:21;;;9775:11;;;;:17;-1:-1:-1;9323:476:80:o;8221:339::-;8341:10;8303:25;8331:21;;;:9;:21;;;;;8366:48;8331:21;8402:11;8366:26;:48::i;:::-;8362:192;;;8430:37;8451:7;8460:6;8430:20;:37::i;:::-;8293:267;8221:339;;:::o;8362:192::-;8498:45;8514:7;8523:11;8536:6;8498:15;:45::i;2433:187:41:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;802:337:73:-;887:10;878:20;;;;:8;:20;;;;;;:29;-1:-1:-1;874:128:73;;;950:10;970:20;;;;:8;:20;;;;;;;;930:61;;-1:-1:-1;;;930:61:73;;;;;12905:51:120;;;;12972:18;;;12965:34;;;13015:18;;;13008:34;12878:18;;930:61:73;12703:345:120;874:128:73;1020:10;1011:20;;;;:8;:20;;;;;:30;;1035:6;;1011:20;:30;;1035:6;;1011:30;:::i;:::-;;;;-1:-1:-1;;;;;;;1051:18:73;;;;;;:8;:18;;;;;:28;;1073:6;;1051:18;:28;;1073:6;;1051:28;:::i;:::-;;;;-1:-1:-1;;1094:38:73;;1340:25:120;;;-1:-1:-1;;;;;1094:38:73;;;1103:10;;1094:38;;1328:2:120;1313:18;1094:38:73;;;;;;;802:337;;:::o;9805:538:80:-;-1:-1:-1;;;;;9951:17:80;;9905:7;9951:17;;;:9;:17;;;;;;;;9924:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9905:7;;9924:44;9951:17;;9924:44;;;;;;;9905:7;;9924:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9924:44:80;;-1:-1:-1;;9983:17:80;;;;:24;9924:44;;-1:-1:-1;9979:68:80;;10035:1;10028:8;;;;;9979:68;10073:13;;10110:11;;;;10131:184;10144:7;:17;;;:24;10138:3;:30;:93;;;;;10212:19;10172:7;:17;;;10190:3;10172:22;;;;;;;;:::i;:::-;;;;;;;:37;;;:59;10138:93;10131:184;;;10256:7;:17;;;10274:3;10256:22;;;;;;;;:::i;:::-;;;;;;;:29;;;10247:38;;;;;:::i;:::-;;-1:-1:-1;10299:5:80;;;;:::i;:::-;;;;10131:184;;;-1:-1:-1;10331:5:80;9805:538;-1:-1:-1;;;;9805:538:80:o;11532:390::-;-1:-1:-1;;;;;11714:23:80;;11691:7;11714:23;;;:15;:23;;;;;;;;11710:70;;;-1:-1:-1;11760:9:80;11753:16;;11710:70;11812:9;11794:14;11802:6;11794:5;:14;:::i;:::-;:27;11790:91;;11864:6;11844:17;11856:5;11844:9;:17;:::i;:::-;:26;;;;:::i;:::-;11837:33;;;;11790:91;11898:17;11910:5;11898:9;:17;:::i;:::-;11891:24;;11532:390;;;;;;;:::o;11258:268::-;-1:-1:-1;;;;;11451:23:80;;11427:4;11451:23;;;:15;:23;;;;;;;;11450:24;:69;;;;-1:-1:-1;11510:9:80;11478:29;11499:8;11478:18;:29;:::i;:::-;:41;;11258:268;-1:-1:-1;;;;;11258:268:80:o;8566:256::-;8707:17;;;:24;8672:4;;8707:28;;;;:108;;-1:-1:-1;8753:17:80;;;8771:24;;:28;;8798:1;;8771:28;:::i;:::-;8753:47;;;;;;;;:::i;:::-;;;;;;;;;;;:62;;;8739:11;:76;8688:127;8566:256;-1:-1:-1;;;8566:256:80:o;8828:195::-;8919:17;;;8937:24;;8977:6;;8919:17;8937:28;;8964:1;;8937:28;:::i;:::-;8919:47;;;;;;;;:::i;:::-;;;;;;;;;;;:54;;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;8993:23:80;;9010:6;;8993:7;;:13;;:23;;9010:6;;8993:23;:::i;:::-;;;;-1:-1:-1;;;;8828:195:80:o;9029:288::-;9164:69;;;;;;;;;;;;;;;;;9207:25;;9136;;9164:69;;;9193:39;;-1:-1:-1;;;;;9207:25:80;9180:11;9193:39;:::i;:::-;9164:69;;9243:17;;;;:34;;;;;;;;-1:-1:-1;9243:34:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9287:23;;9136:97;;-1:-1:-1;9304:6:80;;9243:7;;-1:-1:-1;9287:23:80;;9304:6;;9287:23;:::i;:::-;;;;-1:-1:-1;;;;;;9029:288:80:o;14:173:120:-;82:20;;-1:-1:-1;;;;;131:31:120;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;1376:348::-;1428:8;1438:6;1492:3;1485:4;1477:6;1473:17;1469:27;1459:55;;1510:1;1507;1500:12;1459:55;-1:-1:-1;1533:20:120;;-1:-1:-1;;;;;1565:30:120;;1562:50;;;1608:1;1605;1598:12;1562:50;1645:4;1637:6;1633:17;1621:29;;1697:3;1690:4;1681:6;1673;1669:19;1665:30;1662:39;1659:59;;;1714:1;1711;1704:12;1659:59;1376:348;;;;;:::o;1729:553::-;1818:6;1826;1834;1842;1895:2;1883:9;1874:7;1870:23;1866:32;1863:52;;;1911:1;1908;1901:12;1863:52;1934:29;1953:9;1934:29;:::i;:::-;1924:39;;2014:2;2003:9;1999:18;1986:32;-1:-1:-1;;;;;2033:6:120;2030:30;2027:50;;;2073:1;2070;2063:12;2027:50;2112:59;2163:7;2154:6;2143:9;2139:22;2112:59;:::i;:::-;1729:553;;2190:8;;-1:-1:-1;2086:85:120;;2272:2;2257:18;2244:32;;1729:553;-1:-1:-1;;;;1729:553:120:o;3089:479::-;3169:6;3177;3185;3238:2;3226:9;3217:7;3213:23;3209:32;3206:52;;;3254:1;3251;3244:12;3206:52;3294:9;3281:23;-1:-1:-1;;;;;3319:6:120;3316:30;3313:50;;;3359:1;3356;3349:12;3313:50;3398:59;3449:7;3440:6;3429:9;3425:22;3398:59;:::i;:::-;3476:8;;3372:85;;-1:-1:-1;3558:2:120;3543:18;;;;3530:32;;3089:479;-1:-1:-1;;;;3089:479:120:o;3573:1054::-;3721:4;3750:2;3779;3768:9;3761:21;3820:3;3809:9;3805:19;3866:6;3860:13;3855:2;3844:9;3840:18;3833:41;3911:2;3903:6;3899:15;3893:22;3934:2;3972;3967;3956:9;3952:18;3945:30;4022:2;4014:6;4010:15;4004:22;3984:42;;4045:4;4085:2;4080;4069:9;4065:18;4058:30;4108:6;4143:12;4137:19;4180:6;4172;4165:22;4218:3;4207:9;4203:19;4196:26;;4263:2;4249:12;4245:21;4231:35;;4284:1;4275:10;;4294:307;4308:6;4305:1;4302:13;4294:307;;;4367:13;;4405:9;;4393:22;;4455:11;;;4449:18;4435:12;;;4428:40;4508:11;;4502:18;4488:12;;;4481:40;4576:15;;;;4330:1;4323:9;;;;;4541:12;;;;4294:307;;;-1:-1:-1;4618:3:120;3573:1054;-1:-1:-1;;;;;;;;3573:1054:120:o;4840:254::-;4908:6;4916;4969:2;4957:9;4948:7;4944:23;4940:32;4937:52;;;4985:1;4982;4975:12;4937:52;5008:29;5027:9;5008:29;:::i;:::-;4998:39;5084:2;5069:18;;;;5056:32;;-1:-1:-1;;;4840:254:120:o;5507:202::-;5602:6;5655:2;5643:9;5634:7;5630:23;5626:32;5623:52;;;5671:1;5668;5661:12;5623:52;-1:-1:-1;5694:9:120;5507:202;-1:-1:-1;5507:202:120:o;5714:472::-;5756:3;5794:5;5788:12;5821:6;5816:3;5809:19;5846:1;5856:162;5870:6;5867:1;5864:13;5856:162;;;5932:4;5988:13;;;5984:22;;5978:29;5960:11;;;5956:20;;5949:59;5885:12;5856:162;;;6036:6;6033:1;6030:13;6027:87;;;6102:1;6095:4;6086:6;6081:3;6077:16;6073:27;6066:38;6027:87;-1:-1:-1;6168:2:120;6147:15;-1:-1:-1;;6143:29:120;6134:39;;;;6175:4;6130:50;;5714:472;-1:-1:-1;;5714:472:120:o;6191:220::-;6340:2;6329:9;6322:21;6303:4;6360:45;6401:2;6390:9;6386:18;6378:6;6360:45;:::i;6416:127::-;6477:10;6472:3;6468:20;6465:1;6458:31;6508:4;6505:1;6498:15;6532:4;6529:1;6522:15;6548:127;6609:10;6604:3;6600:20;6597:1;6590:31;6640:4;6637:1;6630:15;6664:4;6661:1;6654:15;6680:125;6720:4;6748:1;6745;6742:8;6739:34;;;6753:18;;:::i;:::-;-1:-1:-1;6790:9:120;;6680:125::o;6810:422::-;6899:1;6942:5;6899:1;6956:270;6977:7;6967:8;6964:21;6956:270;;;7036:4;7032:1;7028:6;7024:17;7018:4;7015:27;7012:53;;;7045:18;;:::i;:::-;7095:7;7085:8;7081:22;7078:55;;;7115:16;;;;7078:55;7194:22;;;;7154:15;;;;6956:270;;;6960:3;6810:422;;;;;:::o;7237:806::-;7286:5;7316:8;7306:80;;-1:-1:-1;7357:1:120;7371:5;;7306:80;7405:4;7395:76;;-1:-1:-1;7442:1:120;7456:5;;7395:76;7487:4;7505:1;7500:59;;;;7573:1;7568:130;;;;7480:218;;7500:59;7530:1;7521:10;;7544:5;;;7568:130;7605:3;7595:8;7592:17;7589:43;;;7612:18;;:::i;:::-;-1:-1:-1;;7668:1:120;7654:16;;7683:5;;7480:218;;7782:2;7772:8;7769:16;7763:3;7757:4;7754:13;7750:36;7744:2;7734:8;7731:16;7726:2;7720:4;7717:12;7713:35;7710:77;7707:159;;;-1:-1:-1;7819:19:120;;;7851:5;;7707:159;7898:34;7923:8;7917:4;7898:34;:::i;:::-;7968:6;7964:1;7960:6;7956:19;7947:7;7944:32;7941:58;;;7979:18;;:::i;:::-;8017:20;;7237:806;-1:-1:-1;;;7237:806:120:o;8048:131::-;8108:5;8137:36;8164:8;8158:4;8137:36;:::i;8184:267::-;8273:6;8268:3;8261:19;8325:6;8318:5;8311:4;8306:3;8302:14;8289:43;-1:-1:-1;8377:1:120;8352:16;;;8370:4;8348:27;;;8341:38;;;;8433:2;8412:15;;;-1:-1:-1;;8408:29:120;8399:39;;;8395:50;;8184:267::o;8456:318::-;8643:2;8632:9;8625:21;8606:4;8663:62;8721:2;8710:9;8706:18;8698:6;8690;8663:62;:::i;:::-;8655:70;;8761:6;8756:2;8745:9;8741:18;8734:34;8456:318;;;;;;:::o;8779:184::-;8849:6;8902:2;8890:9;8881:7;8877:23;8873:32;8870:52;;;8918:1;8915;8908:12;8870:52;-1:-1:-1;8941:16:120;;8779:184;-1:-1:-1;8779:184:120:o;8968:389::-;9183:2;9172:9;9165:21;9146:4;9203:62;9261:2;9250:9;9246:18;9238:6;9230;9203:62;:::i;:::-;9296:2;9281:18;;9274:34;;;;-1:-1:-1;9339:2:120;9324:18;9317:34;9195:70;8968:389;-1:-1:-1;;8968:389:120:o;9362:291::-;9539:2;9528:9;9521:21;9502:4;9559:45;9600:2;9589:9;9585:18;9577:6;9559:45;:::i;:::-;9551:53;;9640:6;9635:2;9624:9;9620:18;9613:34;9362:291;;;;;:::o;9658:277::-;9725:6;9778:2;9766:9;9757:7;9753:23;9749:32;9746:52;;;9794:1;9791;9784:12;9746:52;9826:9;9820:16;9879:5;9872:13;9865:21;9858:5;9855:32;9845:60;;9901:1;9898;9891:12;10351:129;-1:-1:-1;;;;;10429:5:120;10425:30;10418:5;10415:41;10405:69;;10470:1;10467;10460:12;10485:245;10543:6;10596:2;10584:9;10575:7;10571:23;10567:32;10564:52;;;10612:1;10609;10602:12;10564:52;10651:9;10638:23;10670:30;10694:5;10670:30;:::i;11039:499::-;11220:5;11207:19;11201:4;11194:33;11281:2;11274:5;11270:14;11257:28;11253:1;11247:4;11243:12;11236:50;11323:1;11317:4;11313:12;11373:2;11366:5;11362:14;11349:28;11386:32;11410:7;11386:32;:::i;:::-;11453:17;;-1:-1:-1;;11449:47:120;-1:-1:-1;;;;;11498:32:120;;;;11446:85;11427:105;;-1:-1:-1;;11039:499:120:o;12311:247::-;12470:2;12459:9;12452:21;12433:4;12490:62;12548:2;12537:9;12533:18;12525:6;12517;12490:62;:::i;12563:135::-;12602:3;-1:-1:-1;;12623:17:120;;12620:43;;;12643:18;;:::i;:::-;-1:-1:-1;12690:1:120;12679:13;;12563:135::o;13053:128::-;13093:3;13124:1;13120:6;13117:1;13114:13;13111:39;;;13130:18;;:::i;:::-;-1:-1:-1;13166:9:120;;13053:128::o","linkReferences":{}},"methodIdentifiers":{"SYMBOL()":"f76f8d78","balances(address)":"27e235e3","bypassRateLimit(address)":"ed5f43b7","checkIfLimitExceeds(address,string,uint256)":"2cc5b108","disableRateLimiter()":"b74437a5","enableRateLimiter()":"c47f1ac3","evaluateRateLimit(string,uint256)":"5e89c3f4","getBalance(address)":"f8b2cb4f","getRateLimitParams()":"a8ca8964","getTxBatchAtPtr(address)":"112f6a31","getTxHistory(address)":"7012b1d4","isRateLimiterEnabled()":"2f53036e","owner()":"8da5cb5b","priceOracle()":"2630c12f","rateLimitParams()":"2e6c02e3","removeRateLimitBypass(address)":"c60c0646","renounceOwnership()":"715018a6","sendCoin(address,uint256)":"90b98a11","setPriceOracle(address)":"530e784f","setRateLimitBypass(address)":"286df6b7","setRateLimitParams((uint256,uint256,uint64))":"daf42d6c","transferOwnership(address)":"f2fde38b","txHistory(address)":"0a6d4d58"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"provided\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minimum\",\"type\":\"uint64\"}],\"name\":\"InvalidBatchSize\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"InvalidMaxAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PredicateClient_IsRateLimited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RateLimiter_InvalidToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"}],\"name\":\"TokenNotSupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"RateLimitExceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"name\":\"RateLimitParamsUpdated\",\"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\"},{\"inputs\":[],\"name\":\"SYMBOL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bypassRateLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"checkIfLimitExceeds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"evaluateRateLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitParams\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"internalType\":\"struct RateLimitParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTxBatchAtPtr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTxHistory\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ptr\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct TxBatch[]\",\"name\":\"txBatches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TxHistory\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isRateLimiterEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"contract IPriceAggregator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateLimitParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeRateLimitBypass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendCoin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"setRateLimitBypass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"internalType\":\"struct RateLimitParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"setRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"txHistory\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ptr\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disableRateLimiter()\":{\"details\":\"Only callable by the contract owner.\"},\"enableRateLimiter()\":{\"details\":\"Only callable by the contract owner.\"},\"evaluateRateLimit(string,uint256)\":{\"params\":{\"amount\":\"The amount of the token being transacted.\",\"tokenID\":\"The identifier of the token being transacted.\"},\"returns\":{\"_0\":\"bool Returns true if the transaction is within the rate limit, false otherwise.\"}},\"getRateLimitParams()\":{\"returns\":{\"_0\":\"RateLimitParams struct containing the current rate limit settings.\"}},\"getTxBatchAtPtr(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"amount\":\"The total amount in the batch.\",\"endBlockNumber\":\"The ending block number of the batch.\",\"startBlockNumber\":\"The starting block number of the batch.\"}},\"getTxHistory(address)\":{\"params\":{\"user\":\"The address of the user whose transaction history is requested.\"},\"returns\":{\"_0\":\"TxHistory struct containing the user's transaction history.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeRateLimitBypass(address)\":{\"params\":{\"user\":\"The address of the user to remove rate limiting bypass from.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setPriceOracle(address)\":{\"details\":\"Only callable by the contract owner.\",\"params\":{\"_priceOracle\":\"The address of the new price oracle contract.\"}},\"setRateLimitBypass(address)\":{\"details\":\"Only callable by the contract owner.\",\"params\":{\"user\":\"The address of the user to bypass rate limiting for.\"}},\"setRateLimitParams((uint256,uint256,uint64))\":{\"details\":\"Only callable by the contract owner. Updates the rate limit parameters and enables the rate limiter.\",\"params\":{\"params\":\"The new rate limit parameters to be set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRateLimiter()\":{\"notice\":\"Disables the rate limiter.\"},\"enableRateLimiter()\":{\"notice\":\"Enables the rate limiter.\"},\"evaluateRateLimit(string,uint256)\":{\"notice\":\"Evaluates whether a transaction exceeds the rate limit and updates the transaction history if it doesn't.\"},\"getRateLimitParams()\":{\"notice\":\"Retrieves the current rate limit parameters.\"},\"getTxBatchAtPtr(address)\":{\"notice\":\"Retrieves the transaction batch at the current pointer for a given user.\"},\"getTxHistory(address)\":{\"notice\":\"Retrieves the transaction history for a specific user.\"},\"removeRateLimitBypass(address)\":{\"notice\":\"Removes rate limit bypass for a specific user.\"},\"setPriceOracle(address)\":{\"notice\":\"Sets the price oracle address.\"},\"setRateLimitBypass(address)\":{\"notice\":\"Enables rate limit bypass for a specific user.\"},\"setRateLimitParams((uint256,uint256,uint64))\":{\"notice\":\"Sets new parameters for rate limiting.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/examples/MetaCoinWithRateLimit.sol\":\"MetaCoinWithRateLimit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"src/examples/MetaCoinWithRateLimit.sol\":{\"keccak256\":\"0x1f0923a2af9d4b6b2e4be942ae9d1f7f02ad5c9728af87db456706b5b5072280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://327eca368cb525e938e0e8e8b2a2159cc2302699a7482cd25de2e657dcfdfcac\",\"dweb:/ipfs/QmdtDGJbbr1XApBzxmqDFWfw2y1FmaZbrDKYbxH8Bh7JaW\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]},\"src/interfaces/IRateLimiter.sol\":{\"keccak256\":\"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf\",\"dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg\"]},\"src/mixins/RateLimiter.sol\":{\"keccak256\":\"0x16d42446a94fcd000bc88b7c775e99b2d5632f313c26a948408d00e33fd4ce8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36daa4f8d96f817a108969aca7c9997bda88e70799f4e06ccec915213298e82b\",\"dweb:/ipfs/QmVZj6eL1CwFhEYsSUpKrtQLcZBHo8o7847bG5uCNddV3H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint64","name":"provided","type":"uint64"},{"internalType":"uint64","name":"minimum","type":"uint64"}],"type":"error","name":"InvalidBatchSize"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"type":"error","name":"InvalidDuration"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"type":"error","name":"InvalidMaxAmount"},{"inputs":[],"type":"error","name":"PredicateClient_IsRateLimited"},{"inputs":[],"type":"error","name":"RateLimiter_InvalidToken"},{"inputs":[{"internalType":"string","name":"token","type":"string"}],"type":"error","name":"TokenNotSupported"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"string","name":"token","type":"string","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"RateLimitExceeded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"duration","type":"uint256","indexed":false},{"internalType":"uint64","name":"batchSize","type":"uint64","indexed":false}],"type":"event","name":"RateLimitParamsUpdated","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":[],"stateMutability":"view","type":"function","name":"SYMBOL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"bypassRateLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"checkIfLimitExceeds","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableRateLimiter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"enableRateLimiter"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"evaluateRateLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRateLimitParams","outputs":[{"internalType":"struct RateLimitParams","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getTxBatchAtPtr","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startBlockNumber","type":"uint256"},{"internalType":"uint256","name":"endBlockNumber","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getTxHistory","outputs":[{"internalType":"struct TxHistory","name":"","type":"tuple","components":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"ptr","type":"uint256"},{"internalType":"struct TxBatch[]","name":"txBatches","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startBlockNumber","type":"uint256"},{"internalType":"uint256","name":"endBlockNumber","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isRateLimiterEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"contract IPriceAggregator","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rateLimitParams","outputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeRateLimitBypass"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sendCoin"},{"inputs":[{"internalType":"address","name":"_priceOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRateLimitBypass"},{"inputs":[{"internalType":"struct RateLimitParams","name":"params","type":"tuple","components":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setRateLimitParams"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"txHistory","outputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"ptr","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"disableRateLimiter()":{"details":"Only callable by the contract owner."},"enableRateLimiter()":{"details":"Only callable by the contract owner."},"evaluateRateLimit(string,uint256)":{"params":{"amount":"The amount of the token being transacted.","tokenID":"The identifier of the token being transacted."},"returns":{"_0":"bool Returns true if the transaction is within the rate limit, false otherwise."}},"getRateLimitParams()":{"returns":{"_0":"RateLimitParams struct containing the current rate limit settings."}},"getTxBatchAtPtr(address)":{"params":{"user":"The address of the user to check."},"returns":{"amount":"The total amount in the batch.","endBlockNumber":"The ending block number of the batch.","startBlockNumber":"The starting block number of the batch."}},"getTxHistory(address)":{"params":{"user":"The address of the user whose transaction history is requested."},"returns":{"_0":"TxHistory struct containing the user's transaction history."}},"owner()":{"details":"Returns the address of the current owner."},"removeRateLimitBypass(address)":{"params":{"user":"The address of the user to remove rate limiting bypass from."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setPriceOracle(address)":{"details":"Only callable by the contract owner.","params":{"_priceOracle":"The address of the new price oracle contract."}},"setRateLimitBypass(address)":{"details":"Only callable by the contract owner.","params":{"user":"The address of the user to bypass rate limiting for."}},"setRateLimitParams((uint256,uint256,uint64))":{"details":"Only callable by the contract owner. Updates the rate limit parameters and enables the rate limiter.","params":{"params":"The new rate limit parameters to be set."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"disableRateLimiter()":{"notice":"Disables the rate limiter."},"enableRateLimiter()":{"notice":"Enables the rate limiter."},"evaluateRateLimit(string,uint256)":{"notice":"Evaluates whether a transaction exceeds the rate limit and updates the transaction history if it doesn't."},"getRateLimitParams()":{"notice":"Retrieves the current rate limit parameters."},"getTxBatchAtPtr(address)":{"notice":"Retrieves the transaction batch at the current pointer for a given user."},"getTxHistory(address)":{"notice":"Retrieves the transaction history for a specific user."},"removeRateLimitBypass(address)":{"notice":"Removes rate limit bypass for a specific user."},"setPriceOracle(address)":{"notice":"Sets the price oracle address."},"setRateLimitBypass(address)":{"notice":"Enables rate limit bypass for a specific user."},"setRateLimitParams((uint256,uint256,uint64))":{"notice":"Sets new parameters for rate limiting."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/examples/MetaCoinWithRateLimit.sol":"MetaCoinWithRateLimit"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"src/examples/MetaCoinWithRateLimit.sol":{"keccak256":"0x1f0923a2af9d4b6b2e4be942ae9d1f7f02ad5c9728af87db456706b5b5072280","urls":["bzz-raw://327eca368cb525e938e0e8e8b2a2159cc2302699a7482cd25de2e657dcfdfcac","dweb:/ipfs/QmdtDGJbbr1XApBzxmqDFWfw2y1FmaZbrDKYbxH8Bh7JaW"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"},"src/interfaces/IRateLimiter.sol":{"keccak256":"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4","urls":["bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf","dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg"],"license":"MIT"},"src/mixins/RateLimiter.sol":{"keccak256":"0x16d42446a94fcd000bc88b7c775e99b2d5632f313c26a948408d00e33fd4ce8c","urls":["bzz-raw://36daa4f8d96f817a108969aca7c9997bda88e70799f4e06ccec915213298e82b","dweb:/ipfs/QmVZj6eL1CwFhEYsSUpKrtQLcZBHo8o7847bG5uCNddV3H"],"license":"MIT"}},"version":1},"id":73} \ No newline at end of file diff --git a/out/MockClient.sol/MockClient.json b/out/MockClient.sol/MockClient.json new file mode 100644 index 00000000..a38947d2 --- /dev/null +++ b/out/MockClient.sol/MockClient.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_serviceManager","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"counter","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"incrementCounter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"policyID","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IServiceManager"}],"stateMutability":"view"},{"type":"function","name":"setPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceManager","inputs":[{"name":"_serviceManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"PredicateClient__Unauthorized","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033","sourceMap":"219:396:88:-:0;;;293:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:41;719:10:52;936:18:41;:32::i;:::-;354:34:88;372:15;354:17;:34::i;:::-;293:102;219:396;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;1117:149:79:-;1094:13:41;:11;:13::i;:::-;1210:14:79::1;:49:::0;;-1:-1:-1;;;;;;1210:49:79::1;-1:-1:-1::0;;;;;1210:49:79;;;::::1;::::0;;;::::1;::::0;;1117:149::o;1359:130:41:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;511:2:120;1414:68:41;;;493:21:120;;;530:18;;;523:30;589:34;569:18;;;562:62;641:18;;1414:68:41;;;;;;;;1359:130::o;14:290:120:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:120;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:120:o;309:356::-;219:396:88;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033","sourceMap":"219:396:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:10;;-1:-1:-1;;;596:10:88;;216:2:120;596:10:88;;;198:21:120;-1:-1:-1;235:18:120;;;228:29;274:18;;596:10:88;;;;;;;;219:396;536:10;;-1:-1:-1;;;536:10:88;;216:2:120;536:10:88;;;198:21:120;-1:-1:-1;235:18:120;;;228:29;274:18;;536:10:88;14:284:120;381:37:79;;;;;;;;;;-1:-1:-1;381:37:79;;;;-1:-1:-1;;;;;381:37:79;;;;;;-1:-1:-1;;;;;492:32:120;;;474:51;;462:2;447:18;381:37:79;;;;;;;;401:91:88;;;;;;;;;;;;;:::i;:::-;;264:22;;;;;;;;;;;;;;;;;;;682:25:120;;;670:2;655:18;264:22:88;536:177:120;811:159:79;;;;;;;;;;-1:-1:-1;811:159:79;;;;;:::i;:::-;;:::i;1831:101:41:-;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:41;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;1117:149:79;;;;;;;;;;-1:-1:-1;1117:149:79;;;;;:::i;:::-;;:::i;424:22::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2081:198:41:-;;;;;;;;;;-1:-1:-1;2081:198:41;;;;;:::i;:::-;;:::i;401:91:88:-;608:14:79;;-1:-1:-1;;;;;608:14:79;586:10;:37;582:106;;646:31;;-1:-1:-1;;;646:31:79;;;;;;;;;;;582:106;476:7:88::1;:9:::0;;;:7:::1;:9;::::0;::::1;:::i;:::-;;;;;;401:91::o:0;811:159:79:-;1094:13:41;:11;:13::i;:::-;898:20:79;;::::1;::::0;:8:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;928:14:79::1;::::0;:35:::1;::::0;-1:-1:-1;;;928:35:79;;-1:-1:-1;;;;;928:14:79;;::::1;::::0;:24:::1;::::0;:35:::1;::::0;953:9;;928:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;811:159:::0;:::o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1117:149:79:-;1094:13:41;:11;:13::i;:::-;1210:14:79::1;:49:::0;;-1:-1:-1;;;;;;1210:49:79::1;-1:-1:-1::0;;;;;1210:49:79;;;::::1;::::0;;;::::1;::::0;;1117:149::o;424:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;3702:2:120;2161:73:41::1;::::0;::::1;3684:21:120::0;3741:2;3721:18;;;3714:30;3780:34;3760:18;;;3753:62;-1:-1:-1;;;3831:18:120;;;3824:36;3877:19;;2161:73:41::1;3500:402:120::0;2161:73:41::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;4109:2:120;1414:68:41;;;4091:21:120;;;4128:18;;;4121:30;4187:34;4167:18;;;4160:62;4239:18;;1414:68:41;3907:356:120;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;718:127:120;779:10;774:3;770:20;767:1;760:31;810:4;807:1;800:15;834:4;831:1;824:15;850:922;919:6;972:2;960:9;951:7;947:23;943:32;940:52;;;988:1;985;978:12;940:52;1028:9;1015:23;1057:18;1098:2;1090:6;1087:14;1084:34;;;1114:1;1111;1104:12;1084:34;1152:6;1141:9;1137:22;1127:32;;1197:7;1190:4;1186:2;1182:13;1178:27;1168:55;;1219:1;1216;1209:12;1168:55;1255:2;1242:16;1277:2;1273;1270:10;1267:36;;;1283:18;;:::i;:::-;1358:2;1352:9;1326:2;1412:13;;-1:-1:-1;;1408:22:120;;;1432:2;1404:31;1400:40;1388:53;;;1456:18;;;1476:22;;;1453:46;1450:72;;;1502:18;;:::i;:::-;1542:10;1538:2;1531:22;1577:2;1569:6;1562:18;1617:7;1612:2;1607;1603;1599:11;1595:20;1592:33;1589:53;;;1638:1;1635;1628:12;1589:53;1694:2;1689;1685;1681:11;1676:2;1668:6;1664:15;1651:46;1739:1;1717:15;;;1734:2;1713:24;1706:35;;;;-1:-1:-1;1721:6:120;850:922;-1:-1:-1;;;;;850:922:120:o;1985:286::-;2044:6;2097:2;2085:9;2076:7;2072:23;2068:32;2065:52;;;2113:1;2110;2103:12;2065:52;2139:23;;-1:-1:-1;;;;;2191:31:120;;2181:42;;2171:70;;2237:1;2234;2227:12;2171:70;2260:5;1985:286;-1:-1:-1;;;1985:286:120:o;2276:597::-;2388:4;2417:2;2446;2435:9;2428:21;2478:6;2472:13;2521:6;2516:2;2505:9;2501:18;2494:34;2546:1;2556:140;2570:6;2567:1;2564:13;2556:140;;;2665:14;;;2661:23;;2655:30;2631:17;;;2650:2;2627:26;2620:66;2585:10;;2556:140;;;2714:6;2711:1;2708:13;2705:91;;;2784:1;2779:2;2770:6;2759:9;2755:22;2751:31;2744:42;2705:91;-1:-1:-1;2857:2:120;2836:15;-1:-1:-1;;2832:29:120;2817:45;;;;2864:2;2813:54;;2276:597;-1:-1:-1;;;2276:597:120:o;2878:232::-;2917:3;-1:-1:-1;;2938:17:120;;2935:140;;;2997:10;2992:3;2988:20;2985:1;2978:31;3032:4;3029:1;3022:15;3060:4;3057:1;3050:15;2935:140;-1:-1:-1;3102:1:120;3091:13;;2878:232::o;3115:380::-;3194:1;3190:12;;;;3237;;;3258:61;;3312:4;3304:6;3300:17;3290:27;;3258:61;3365:2;3357:6;3354:14;3334:18;3331:38;3328:161;;;3411:10;3406:3;3402:20;3399:1;3392:31;3446:4;3443:1;3436:15;3474:4;3471:1;3464:15;3328:161;;3115:380;;;:::o","linkReferences":{}},"methodIdentifiers":{"counter()":"61bc221a","incrementCounter()":"5b34b966","owner()":"8da5cb5b","policyID()":"c6cf634b","renounceOwnership()":"715018a6","serviceManager()":"3998fdd3","setPolicy(string)":"6b4c991b","setServiceManager(address)":"9b41bf23","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PredicateClient__Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"counter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementCounter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"policyID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceManager\",\"outputs\":[{\"internalType\":\"contract IServiceManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceManager\",\"type\":\"address\"}],\"name\":\"setServiceManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setPolicy(string)\":{\"params\":{\"_policyID\":\"policy ID from onchain\"}},\"setServiceManager(address)\":{\"params\":{\"_serviceManager\":\"address of the service manager\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setPolicy(string)\":{\"notice\":\"Updates the policy ID\"},\"setServiceManager(address)\":{\"notice\":\"Internal function for setting the ServiceManager\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockClient.sol\":\"MockClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_serviceManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"PredicateClient__Unauthorized"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"counter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"incrementCounter"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"policyID","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceManager","outputs":[{"internalType":"contract IServiceManager","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setPolicy"},{"inputs":[{"internalType":"address","name":"_serviceManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceManager"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setPolicy(string)":{"params":{"_policyID":"policy ID from onchain"}},"setServiceManager(address)":{"params":{"_serviceManager":"address of the service manager"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"setPolicy(string)":{"notice":"Updates the policy ID"},"setServiceManager(address)":{"notice":"Internal function for setting the ServiceManager"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockClient.sol":"MockClient"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"}},"version":1},"id":88} \ No newline at end of file diff --git a/out/MockDelegationManager.sol/MockDelegationManager.json b/out/MockDelegationManager.sol/MockDelegationManager.json new file mode 100644 index 00000000..17da7c68 --- /dev/null +++ b/out/MockDelegationManager.sol/MockDelegationManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_strategyManager","type":"address","internalType":"address"},{"name":"_slasher","type":"address","internalType":"address"},{"name":"_eigenPodManager","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAKER_DELEGATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"avsOperatorStatus","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"stateMutability":"view"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"calculateCurrentStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateDelegationApprovalDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"_stakerNonce","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"completeQueuedWithdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"},{"name":"receiveAsTokens","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeQueuedWithdrawals","inputs":[{"name":"withdrawals","type":"tuple[]","internalType":"struct IDelegationManager.Withdrawal[]","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[][]","internalType":"contract IERC20[][]"},{"name":"middlewareTimesIndexes","type":"uint256[]","internalType":"uint256[]"},{"name":"receiveAsTokens","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeWithdrawalsQueued","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decreaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateTo","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateToBySignature","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"stakerSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegatedTo","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApprover","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApproverSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"earningsReceiver","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"getDelegatableShares","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"increaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"initialPausedStatus","type":"uint256","internalType":"uint256"},{"name":"_withdrawalDelayBlocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegated","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawals","inputs":[{"name":"withdrawalsToMigrate","type":"tuple[]","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyOperatorDetails","inputs":[{"name":"newOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorDetails","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorShares","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"pendingWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"queueWithdrawals","inputs":[{"name":"queuedWithdrawalParams","type":"tuple[]","internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"withdrawer","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerAsOperator","inputs":[{"name":"registeringOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]},{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerNonce","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerOptOutWindowBlocks","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"test","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawalRoots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalDelayBlocks","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus"}],"anonymous":false},{"type":"event","name":"OperatorDetailsModified","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newOperatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorMetadataURIUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorSharesDecreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSharesIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"StakerDelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerForceUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalCompleted","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalDelayBlocksSet","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalMigrated","inputs":[{"name":"oldWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalQueued","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"withdrawal","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"anonymous":false}],"bytecode":{"object":"0x6101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c0033","sourceMap":"351:284:89:-:0;;;409:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5860:34:97;;;;;5904;;;;;5948:18;;;;556:16:89;584:8;612:16;2984:22:96::1;:20;:22::i;:::-;-1:-1:-1::0;;3036:13:96::1;3016:33;::::0;-1:-1:-1;351:284:89;;-1:-1:-1;;;351:284:89;5388:279:38;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:38;;781:2:120;5447:66:38;;;763:21:120;820:2;800:18;;;793:30;859:34;839:18;;;832:62;-1:-1:-1;;;910:18:120;;;903:37;957:19;;5447:66:38;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:38;5588:15;5573:30;;;;;;5622:28;;1129:36:120;;;5622:28:38;;1117:2:120;1102:18;5622:28:38;;;;;;;5523:138;5388:279::o;14:177:120:-;93:13;;-1:-1:-1;;;;;135:31:120;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;987:184::-;351:284:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c0033","sourceMap":"351:284:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:155:97;;1190:92;1127:155;;;;;160:25:120;;;148:2;133:18;1127:155:97;;;;;;;;46593:630:96;;;;;;:::i;:::-;;:::i;13790:1509::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4408:756::-;;;;;;:::i;:::-;;:::i;:::-;;5869:152:101;;;;;;:::i;:::-;;:::i;22122:493:96:-;;;;;;:::i;:::-;;:::i;3845:406:101:-;;;;;;:::i;:::-;;:::i;41903:173:96:-;;;;;;:::i;:::-;-1:-1:-1;;;;;42018:26:96;41992:7;42018:26;;;:16;:26;;;;;:51;;;-1:-1:-1;;;42018:51:96;;;;;41903:173;44609:408;;;;;;:::i;:::-;;:::i;645:130:97:-;;695:80;645:130;;21094:486:96;;;;;;:::i;:::-;;:::i;3493:46:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;17815:458:96;;;;;;:::i;:::-;;:::i;5671:71:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7706:14:120;;7699:22;7681:41;;7669:2;7654:18;5671:71:97;7541:187:120;1917:49:97;;;;;;;;-1:-1:-1;;;;;7923:32:120;;;7905:51;;7893:2;7878:18;1917:49:97;7733:229:120;41652:161:96;;;;;;:::i;:::-;-1:-1:-1;;;;;41761:26:96;;;41735:7;41761:26;;;:16;:26;;;;;:45;;;;;41652:161;40650:137;;;;;;:::i;:::-;;:::i;874:152:97:-;;935:91;874:152;;2125:49;;;;;5387:94;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1932:74:96:-;;1991:15;1932:74;;4578:36:97;;;;;;4326:136:101;;;:::i;44157:164:96:-;;;;;;:::i;:::-;;:::i;5635:163:101:-;;;;;;:::i;:::-;5767:7;;5738:1;:10;;;;;;;;5767:14;;;5766:24;;5635:163;5447:87;5520:7;;5447:87;;18510:2042:96;;;;;;:::i;:::-;;:::i;41403:157::-;;;;;;:::i;:::-;-1:-1:-1;;;;;41510:26:96;;;41484:7;41510:26;;;:16;:26;;;;;:43;;;41403:157;16741:340;;;;;;:::i;:::-;;:::i;3289:46:97:-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3289:46:97;;;40894:162:96;;;;;;:::i;:::-;;:::i;2071:101:37:-;;;:::i;2742:71:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9662:1198:96;;;;;;:::i;:::-;;:::i;1824:37:101:-;;;;;-1:-1:-1;;;;;1824:37:101;;;1441:85:37;1513:6;;-1:-1:-1;;;;;1513:6:37;1441:85;;2074:104:96;;2135:42;2074:104;;22864:1751;;;;;;:::i;:::-;;:::i;6075:276::-;;;;;;:::i;:::-;;:::i;47626:508::-;;;;;;:::i;:::-;;:::i;5028:62:97:-;;;;;;:::i;:::-;;;;;;;;;;;;;;24775:610:96;;;;;;:::i;:::-;;:::i;6556:150::-;;;;;;:::i;:::-;;:::i;2025:33:97:-;;;;;4731:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3982:81;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;41159:154:96;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41280:26:96;;;;;:16;:26;;;;;41273:33;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;41273:33:96;;;;;;;;;;41159:154;;;;;23632:13:120;;-1:-1:-1;;;;;23628:22:120;;;23610:41;;23711:4;23699:17;;;23693:24;23689:33;;;23667:20;;;23660:63;23771:17;;;23765:24;23791:10;23761:41;23739:20;;;23732:71;23560:2;23545:18;41159:154:96;23358:451:120;45447:550:96;;;;;;:::i;:::-;;:::i;2181:60:97:-;;2235:6;2181:60;;42301:1790:96;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1377:150:97:-;;1446:81;1377:150;;11185:2248:96;;;;;;:::i;:::-;;:::i;3225:432::-;;;;;;:::i;:::-;;:::i;7709:352::-;;;;;;:::i;:::-;;:::i;5576:279::-;;;;;;:::i;:::-;;:::i;2321:198:37:-;;;;;;:::i;:::-;;:::i;40311:227:96:-;;;:::i;4938:439:101:-;;;;;;:::i;:::-;;:::i;46593:630:96:-;46916:101;;;1190:92:97;46916:101:96;;;;27441:25:120;;;;-1:-1:-1;;;;;27540:15:120;;;27520:18;;;27513:43;27592:15;;;27572:18;;;27565:43;27644:15;;27624:18;;;27617:43;27676:19;;;27669:35;;;27720:19;;;;27713:35;;;46916:101:96;;;;;;;;;;27413:19:120;;;;46916:101:96;;;46893:134;;;;;-1:-1:-1;;;47142:17:96;:15;:17::i;:::-;47113:67;;-1:-1:-1;;;47113:67:96;;;28017:27:120;28060:11;;;28053:27;;;;28096:12;;;28089:28;;;28133:12;;47113:67:96;;;;;;-1:-1:-1;;47113:67:96;;;;;;47103:78;;47113:67;47103:78;;;;;46593:630;-1:-1:-1;;;;;;;;46593:630:96:o;13790:1509::-;5767:7:101;;13955:16:96;;1405:1;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;;;;;;;;;13983:32:96::1;14032:22:::0;-1:-1:-1;;;;;14018:44:96;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;14018:44:96::1;;13983:79;;14078:9;14073:1188;14093:33:::0;;::::1;14073:1188;;;14219:22;;14242:1;14219:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:39;;14172:22;;14195:1;14172:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;::::1;:::i;:::-;:43;;:86;14147:201;;;::::0;-1:-1:-1;;;14147:201:96;;30308:2:120;14147:201:96::1;::::0;::::1;30290:21:120::0;30347:2;30327:18;;;30320:30;30386:34;30366:18;;;30359:62;30457:26;30437:18;;;30430:54;30501:19;;14147:201:96::1;30106:420:120::0;14147:201:96::1;14435:1;14387:22:::0;;14410:1;14387:25;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;14387:50:96::1;;;14362:181;;;::::0;-1:-1:-1;;;14362:181:96;;30733:2:120;14362:181:96::1;::::0;::::1;30715:21:120::0;30772:2;30752:18;;;30745:30;30811:34;30791:18;;;30784:62;30882:34;30862:18;;;30855:62;-1:-1:-1;;;30933:19:120;;;30926:39;30982:19;;14362:181:96::1;30531:476:120::0;14362:181:96::1;14589:10;14558:16;14577:23:::0;;;:11:::1;:23;::::0;;;;;-1:-1:-1;;;;;14577:23:96::1;::::0;14941:309:::1;::::0;14577:23;15075:22;;15098:1;15075:25;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;;;;::::1;;;:::i;:::-;15141:22;;15164:1;15141:25;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:36;::::0;;::::1;:::i;:::-;14941:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;15203:22:96;;-1:-1:-1;15203:22:96;;-1:-1:-1;15226:1:96;;-1:-1:-1;15203:25:96;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;14941:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14941:31:96::1;::::0;-1:-1:-1;;;14941:309:96:i:1;:::-;14920:15;14936:1;14920:18;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:330;-1:-1:-1;14128:3:96;::::1;::::0;::::1;:::i;:::-;;;;14073:1188;;;-1:-1:-1::0;15277:15:96;13790:1509;-1:-1:-1;;;;13790:1509:96:o;4408:756::-;4597:10;4637:1;4580:28;;;:16;:28;;;;;:45;-1:-1:-1;;;;;4580:45:96;:59;4559:175;;;;-1:-1:-1;;;4559:175:96;;31486:2:120;4559:175:96;;;31468:21:120;31525:2;31505:18;;;31498:30;31564:34;31544:18;;;31537:62;31635:34;31615:18;;;31608:62;-1:-1:-1;;;31686:19:120;;;31679:36;31732:19;;4559:175:96;31284:473:120;4559:175:96;4744:59;4764:10;4776:26;4744:19;:59::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;4925:70:96;4935:10;;4959:23;4992:1;4925:9;:70::i;:::-;5052:10;-1:-1:-1;;;;;5033:58:96;;5064:26;5033:58;;;;;;:::i;:::-;;;;;;;;5133:10;-1:-1:-1;;;;;5106:51:96;;5145:11;;5106:51;;;;;;;:::i;:::-;;;;;;;;4549:615;4408:756;;;:::o;5869:152:101:-;2284:14;;;;;;;;;-1:-1:-1;;;;;2284:14:101;-1:-1:-1;;;;;2284:23:101;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2270:39:101;:10;-1:-1:-1;;;;;2270:39:101;;2262:94;;;;-1:-1:-1;;;2262:94:101;;;;;;;:::i;:::-;5977:37:::1;5996:17;5977:18;:37::i;:::-;5869:152:::0;:::o;22122:493:96:-;2400:10;-1:-1:-1;;;;;2422:15:96;2400:38;;;:80;;-1:-1:-1;2442:10:96;-1:-1:-1;;;;;2464:15:96;2442:38;;2400:80;2379:182;;;;-1:-1:-1;;;2379:182:96;;;;;;;:::i;:::-;22350:19:::1;22362:6;22350:11;:19::i;:::-;22346:263;;;-1:-1:-1::0;;;;;22404:19:96;;::::1;22385:16;22404:19:::0;;;:11:::1;:19;::::0;;;;;::::1;22501:97;22404:19:::0;22416:6;22572:8;22590:6;22501:23:::1;:97::i;:::-;22371:238;22346:263;22122:493:::0;;;:::o;3845:406:101:-;2124:14;;:35;;-1:-1:-1;;;2124:35:101;;2148:10;2124:35;;;7905:51:120;-1:-1:-1;;;;;2124:14:101;;;;:23;;7878:18:120;;2124:35:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:88;;;;-1:-1:-1;;;2116:88:101;;;;;;;:::i;:::-;4091:7:::1;::::0;4061:25;;::::1;4060:38;4052:107;;;::::0;-1:-1:-1;;;4052:107:101;;34800:2:120;4052:107:101::1;::::0;::::1;34782:21:120::0;34839:2;34819:18;;;34812:30;34878:34;34858:18;;;34851:62;34949:26;34929:18;;;34922:54;34993:19;;4052:107:101::1;34598:420:120::0;4052:107:101::1;4169:7;:25:::0;;;4209:35:::1;::::0;160:25:120;;;4216:10:101::1;::::0;4209:35:::1;::::0;148:2:120;133:18;4209:35:101::1;;;;;;;;3845:406:::0;:::o;44609:408:96:-;-1:-1:-1;;;;;44856:19:96;;44764:7;44856:19;;;:11;:19;;;;;;44929:81;44868:6;44856:19;44993:8;45003:6;44929:35;:81::i;:::-;44922:88;44609:408;-1:-1:-1;;;;;44609:408:96:o;21094:486::-;2400:10;-1:-1:-1;;;;;2422:15:96;2400:38;;;:80;;-1:-1:-1;2442:10:96;-1:-1:-1;;;;;2464:15:96;2442:38;;2400:80;2379:182;;;;-1:-1:-1;;;2379:182:96;;;;;;;:::i;:::-;21322:19:::1;21334:6;21322:11;:19::i;:::-;21318:256;;;-1:-1:-1::0;;;;;21376:19:96;;::::1;21357:16;21376:19:::0;;;:11:::1;:19;::::0;;;;;::::1;21466:97;21376:19:::0;21388:6;21537:8;21555:6;21466:23:::1;:97::i;17815:458::-:0;5767:7:101;;1549:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;18099:9:96::1;18094:173;18114:22:::0;;::::1;18094:173;;;18157:99;18183:11;;18195:1;18183:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18199:6;;18206:1;18199:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18210:22;;18233:1;18210:25;;;;;;;:::i;:::-;;;;;;;18237:15;;18253:1;18237:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18157:25;:99::i;:::-;18138:3;::::0;::::1;:::i;:::-;;;18094:173;;;;17815:458:::0;;;;;;;;;:::o;40650:137::-;-1:-1:-1;;;;;40746:19:96;;;40722:4;40746:19;;;:11;:19;;;;;;;:33;;;40650:137::o;4326:136:101:-;2124:14;;:35;;-1:-1:-1;;;2124:35:101;;2148:10;2124:35;;;7905:51:120;-1:-1:-1;;;;;2124:14:101;;;;:23;;7878:18:120;;2124:35:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:88;;;;-1:-1:-1;;;2116:88:101;;;;;;;:::i;:::-;-1:-1:-1;;4376:7:101::1;:27:::0;;;4418:37:::1;::::0;160:25:120;;;4425:10:101::1;::::0;4418:37:::1;::::0;148:2:120;133:18;4418:37:101::1;;;;;;;4326:136::o:0;44157:164:96:-;44255:7;44302:10;44291:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;44281:33;;;;;;44274:40;;44157:164;;;:::o;18510:2042::-;18664:9;18659:1887;18683:20;:27;18679:1;:31;18659:1887;;;18727:77;18807:20;18828:1;18807:23;;;;;;;;:::i;:::-;;;;;;;18727:103;;18903:14;18919:25;18948:15;-1:-1:-1;;;;;18948:39:96;;18988:19;18948:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18902:106;;;;19088:9;19084:1393;;;19134:26;;;;;-1:-1:-1;;;;;19263:35:96;;19117:14;19263:35;;;:27;:35;;;;;;;19134:26;;19263:35;;;19316:37;19263:35;19316:37;:::i;:::-;;;;;;19372:36;19411:448;;;;;;;;19452:6;-1:-1:-1;;;;;19411:448:96;;;;;19493:19;:36;;;-1:-1:-1;;;;;19411:448:96;;;;;19563:19;:38;;;:49;;;-1:-1:-1;;;;;19411:448:96;;;;;19641:5;19411:448;;;;19680:19;:40;;;19411:448;;;;;;19754:19;:30;;;19411:448;;;;19814:19;:26;;;19411:448;;;19372:487;;19920:15;19938:43;19962:18;19938:23;:43::i;:::-;20133:27;;;;:18;:27;;;;;;19920:61;;-1:-1:-1;20133:27:96;;20132:28;20103:168;;;;-1:-1:-1;;;20103:168:96;;38975:2:120;20103:168:96;;;38957:21:120;39014:2;38994:18;;;38987:30;39053:34;39033:18;;;39026:62;39124:34;39104:18;;;39097:62;-1:-1:-1;;;39175:19:120;;;39168:36;39221:19;;20103:168:96;38773:473:120;20103:168:96;20289:27;;;;:18;:27;;;;;;;:34;;-1:-1:-1;;20289:34:96;20319:4;20289:34;;;20347:45;;;;;20308:7;;20373:18;;20347:45;:::i;:::-;;;;;;;;20416:46;;;39770:25:120;;;39826:2;39811:18;;39804:34;;;20416:46:96;;39743:18:120;20416:46:96;;;;;;;19099:1378;;;;19084:1393;20518:3;;;;;18713:1833;;;18659:1887;;;;18510:2042;:::o;16741:340::-;5767:7:101;;1549:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;16990:84:96::1;17016:10;17028:6;;17036:20;17058:15;16990:25;:84::i;:::-;16741:340:::0;;;;;;:::o;40894:162::-;-1:-1:-1;;;;;40991:26:96;;;40967:4;40991:26;;;:16;:26;;;;;:43;;:57;;;40894:162::o;2071:101:37:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;9662:1198:96:-;10016:15;9981:24;:31;;;:50;;9960:162;;;;-1:-1:-1;;;9960:162:96;;40051:2:120;9960:162:96;;;40033:21:120;40090:2;40070:18;;;40063:30;40129:34;40109:18;;;40102:62;40200:34;40180:18;;;40173:62;-1:-1:-1;;;40251:19:120;;;40244:32;40293:19;;9960:162:96;39849:469:120;9960:162:96;10203:26;10232:11;:19;10244:6;-1:-1:-1;;;;;10232:19:96;-1:-1:-1;;;;;10232:19:96;;;;;;;;;;;;;10203:48;;10261:24;10300:106;10336:6;10344:18;10364:8;10374:24;:31;;;10300:35;:106::i;:::-;-1:-1:-1;;;;;10440:19:96;;;;;;:11;:19;;;;;10483:1;10462:22;;10440:44;;10630:34;;10261:145;;-1:-1:-1;10559:106:96;;10452:6;;10261:145;;10559:44;:106::i;:::-;10784:69;10794:6;10802:8;10812:26;10840:12;10784:9;:69::i;:::-;9912:948;;9662:1198;;;;;:::o;22864:1751::-;5767:7:101;;1711:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;23134:15:96::1;23106:17;:24;;;:43;;23085:157;;;::::0;-1:-1:-1;;;23085:157:96;;40525:2:120;23085:157:96::1;::::0;::::1;40507:21:120::0;40564:2;40544:18;;;40537:30;-1:-1:-1;;;;;;;;;;;40583:18:120;;;40576:62;40674:34;40654:18;;;40647:62;-1:-1:-1;;;40725:19:120;;;40718:34;40769:19;;23085:157:96::1;40323:471:120::0;23085:157:96::1;23316:40;23291:10;23273:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;23273:39:96;::::1;::::0;;;;;;;;::::1;;::::0;:83;::::1;;;;;;:::i;:::-;;;23252:198;;;::::0;-1:-1:-1;;;23252:198:96;;41001:2:120;23252:198:96::1;::::0;::::1;40983:21:120::0;41040:2;41020:18;;;41013:30;;;-1:-1:-1;;;;;;;;;;;41059:18:120;;;41052:62;41150:34;41130:18;;;41123:62;-1:-1:-1;;;41201:19:120;;;41194:35;41246:19;;23252:198:96::1;40799:472:120::0;23252:198:96::1;-1:-1:-1::0;;;;;23482:29:96;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;23512:22;;::::1;::::0;23482:53;;;;;;;;::::1;;23481:54;23460:160;;;::::0;-1:-1:-1;;;23460:160:96;;41478:2:120;23460:160:96::1;::::0;::::1;41460:21:120::0;41517:2;41497:18;;;41490:30;-1:-1:-1;;;;;;;;;;;41536:18:120;;;41529:62;41627:29;41607:18;;;41600:57;41674:19;;23460:160:96::1;41276:423:120::0;23460:160:96::1;23651:20;23662:8;23651:10;:20::i;:::-;23630:137;;;::::0;-1:-1:-1;;;23630:137:96;;41906:2:120;23630:137:96::1;::::0;::::1;41888:21:120::0;41945:2;41925:18;;;41918:30;-1:-1:-1;;;;;;;;;;;41964:18:120;;;41957:62;42055:34;42035:18;;;42028:62;-1:-1:-1;;;42106:19:120;;;42099:49;42165:19;;23630:137:96::1;41704:486:120::0;23630:137:96::1;23815:38;23856:203;23923:8;23950:10;23980:17;:22;;;24024:17;:24;;;23856:42;:203::i;:::-;23815:244;;24115:137;24173:8;24183:30;24215:17;:27;;;24115:44;:137::i;:::-;24323:10;24305:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;24305:39:96;::::1;::::0;;;;;;;;;:82;;24347:40:::1;-1:-1:-1::0;;24305:82:96;;::::1;::::0;::::1;::::0;;;24432:19:::1;:29:::0;;;;;24462:22;;::::1;::::0;24432:53;;;;;;;;;:60;;;;::::1;::::0;::::1;::::0;;;24508:100;24305:39;;24508:100:::1;::::0;::::1;::::0;24347:40;24508:100:::1;:::i;:::-;;;;;;;;23075:1540;22864:1751:::0;;;:::o;6075:276::-;6180:22;6191:10;6180;:22::i;:::-;6172:106;;;;-1:-1:-1;;;6172:106:96;;42397:2:120;6172:106:96;;;42379:21:120;42436:2;42416:18;;;42409:30;42475:34;42455:18;;;42448:62;42546:34;42526:18;;;42519:62;-1:-1:-1;;;42597:19:120;;;42590:38;42645:19;;6172:106:96;42195:475:120;6172:106:96;6320:10;-1:-1:-1;;;;;6293:51:96;;6332:11;;6293:51;;;;;;;:::i;:::-;;;;;;;;6075:276;;:::o;47626:508::-;47885:75;;;1446:81:97;47885:75:96;;;42934:25:120;-1:-1:-1;;;;;43033:15:120;;;43013:18;;;43006:43;;;;43085:15;;;43065:18;;;43058:43;43117:18;;;43110:34;;;43160:19;;;43153:35;;;47798:7:96;;;;42906:19:120;;47885:75:96;;;;;;;;;;;;;47875:86;;;;;;47854:107;;48008:18;48068:17;:15;:17::i;:::-;48039:59;;-1:-1:-1;;;48039:59:96;;;28017:27:120;28060:11;;;28053:27;;;;28096:12;;;28089:28;;;28133:12;;48039:59:96;;;;;;-1:-1:-1;;48039:59:96;;;;;;48029:70;;48039:59;48029:70;;;;;47626:508;-1:-1:-1;;;;;;;47626:508:96:o;24775:610::-;5767:7:101;;1711:1:96;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;24987:40:96::1;24962:10;24944:29;::::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;24944:39:96;::::1;::::0;;;;;;;;::::1;;::::0;:83;::::1;;;;;;:::i;:::-;;24923:198;;;::::0;-1:-1:-1;;;24923:198:96;;43401:2:120;24923:198:96::1;::::0;::::1;43383:21:120::0;43440:2;43420:18;;;43413:30;;;43479:34;43459:18;;;43452:62;43550:34;43530:18;;;43523:62;-1:-1:-1;;;43601:19:120;;;43594:35;43646:19;;24923:198:96::1;43199:472:120::0;24923:198:96::1;25194:10;25218:42;25176:29:::0;;;:17:::1;:29;::::0;;;;;;;-1:-1:-1;;;;;25176:39:96;::::1;::::0;;;;;;;;:84;;-1:-1:-1;;25176:84:96::1;::::0;;25276:102;25176:39;;25276:102:::1;::::0;::::1;::::0;25218:42;25276:102:::1;:::i;:::-;;;;;;;;24775:610:::0;;:::o;6556:150::-;6675:10;-1:-1:-1;;;;;6653:46:96;;6687:11;;6653:46;;;;;;;:::i;45447:550::-;45728:78;;;935:91:97;45728:78:96;;;42934:25:120;-1:-1:-1;;;;;43033:15:120;;;43013:18;;;43006:43;;;;43085:15;;;43065:18;;;43058:43;43117:18;;;43110:34;;;43160:19;;;43153:35;;;45623:7:96;;;;42906:19:120;;45728:78:96;42675:519:120;42301:1790:96;42516:38;;-1:-1:-1;;;42516:38:96;;-1:-1:-1;;;;;7923:32:120;;;42516:38:96;;;7905:51:120;42382:18:96;;;;-1:-1:-1;;42516:15:96;:30;;;;;;7878:18:120;;42516:38:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42662:35;;-1:-1:-1;;;42662:35:96;;-1:-1:-1;;;;;7923:32:120;;;42662:35:96;;;7905:51:120;42497:57:96;;-1:-1:-1;;;;;42662:15:96;:27;;;;;;7878:18:120;;42662:35:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42662:35:96;;;;;;;;;;;;:::i;:::-;42565:132;;;;42810:1;42797:9;:14;42793:98;;42835:21;;42858;;-1:-1:-1;42301:1790:96;-1:-1:-1;;;42301:1790:96:o;42793:98::-;42901:29;42940:23;42978:21;:28;43010:1;42978:33;42974:1073;;;43113:18;;;43129:1;43113:18;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43154:16:96;;;43168:1;43154:16;;;;;;;;;43100:31;;-1:-1:-1;43168:1:96;-1:-1:-1;43154:16:96;;;;;;;;;;;-1:-1:-1;43154:16:96;43145:25;;2135:42;43184:10;43195:1;43184:13;;;;;;;;:::i;:::-;;;;;;:38;-1:-1:-1;;;;;43184:38:96;;;-1:-1:-1;;;;;43184:38:96;;;;;43256:9;43236:6;43243:1;43236:9;;;;;;;;:::i;:::-;;;;;;:30;;;;;42974:1073;;;43402:28;;:32;;43433:1;43402:32;:::i;:::-;-1:-1:-1;;;;;43386:49:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43386:49:96;;43373:62;;43472:10;:17;-1:-1:-1;;;;;43458:32:96;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43458:32:96;;43449:41;;43581:9;43576:254;43600:21;:28;43596:1;:32;43576:254;;;43665:21;43687:1;43665:24;;;;;;;;:::i;:::-;;;;;;;43649:10;43660:1;43649:13;;;;;;;;:::i;:::-;;;;;;:40;-1:-1:-1;;;;;43649:40:96;;;-1:-1:-1;;;;;43649:40:96;;;;;43719:21;43741:1;43719:24;;;;;;;;:::i;:::-;;;;;;;43707:6;43714:1;43707:9;;;;;;;;:::i;:::-;;;;;;;;;;:36;43794:3;;43576:254;;;;2135:42;43914:10;43945:1;43925:10;:17;:21;;;;:::i;:::-;43914:33;;;;;;;;:::i;:::-;;;;;;:58;-1:-1:-1;;;;;43914:58:96;;;-1:-1:-1;;;;;43914:58:96;;;;;44026:9;43986:6;44013:1;43993:10;:17;:21;;;;:::i;:::-;43986:29;;;;;;;;:::i;:::-;;;;;;:50;;;;;42974:1073;44065:10;;44077:6;;-1:-1:-1;42301:1790:96;-1:-1:-1;;;;;42301:1790:96:o;11185:2248::-;5767:7:101;;11302:32:96;;1405:1;;5738:10:101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;11354:19:96::1;11366:6;11354:11;:19::i;:::-;11346:100;;;::::0;-1:-1:-1;;;11346:100:96;;46772:2:120;11346:100:96::1;::::0;::::1;46754:21:120::0;46811:2;46791:18;;;46784:30;;;46850:34;46830:18;;;46823:62;46921:34;46901:18;;;46894:62;-1:-1:-1;;;46972:19:120;;;46965:35;47017:19;;11346:100:96::1;46570:472:120::0;11346:100:96::1;11465:18;11476:6;11465:10;:18::i;:::-;11464:19;11456:93;;;::::0;-1:-1:-1;;;11456:93:96;;47249:2:120;11456:93:96::1;::::0;::::1;47231:21:120::0;47288:2;47268:18;;;47261:30;47327:34;47307:18;;;47300:62;47398:31;47378:18;;;47371:59;47447:19;;11456:93:96::1;47047:425:120::0;11456:93:96::1;-1:-1:-1::0;;;;;11567:20:96;::::1;11559:93;;;::::0;-1:-1:-1;;;11559:93:96;;47679:2:120;11559:93:96::1;::::0;::::1;47661:21:120::0;47718:2;47698:18;;;47691:30;47757:34;47737:18;;;47730:62;47828:30;47808:18;;;47801:58;47876:19;;11559:93:96::1;47477:424:120::0;11559:93:96::1;-1:-1:-1::0;;;;;11681:19:96;;::::1;11662:16;11681:19:::0;;;:11:::1;:19;::::0;;;;;;;::::1;::::0;11731:10:::1;:20;::::0;:46:::1;;-1:-1:-1::0;11755:10:96::1;-1:-1:-1::0;;;;;11755:22:96;::::1;;11731:46;:125;;;-1:-1:-1::0;;;;;;11811:26:96;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:45:::1;;::::0;::::1;11797:10;:59;11731:125;11710:233;;;::::0;-1:-1:-1;;;11710:233:96;;48108:2:120;11710:233:96::1;::::0;::::1;48090:21:120::0;48147:2;48127:18;;;48120:30;48186:34;48166:18;;;48159:62;48257:31;48237:18;;;48230:59;48306:19;;11710:233:96::1;47906:425:120::0;11710:233:96::1;12121:29;12152:23:::0;12179:28:::1;12200:6;12179:20;:28::i;:::-;12120:87:::0;;-1:-1:-1;12120:87:96;-1:-1:-1;12305:10:96::1;-1:-1:-1::0;;;;;12305:20:96;::::1;;12301:96;;12377:8;-1:-1:-1::0;;;;;12346:40:96::1;12369:6;-1:-1:-1::0;;;;;12346:40:96::1;;;;;;;;;;;12301:96;12471:8;-1:-1:-1::0;;;;;12445:35:96::1;12463:6;-1:-1:-1::0;;;;;12445:35:96::1;;;;;;;;;;;-1:-1:-1::0;;;;;12490:19:96;::::1;12520:1;12490:19:::0;;;:11:::1;:19;::::0;;;;:32;;-1:-1:-1;;;;;;12490:32:96::1;::::0;;12626:17;;12622:772:::1;;12682:16;::::0;;12696:1:::1;12682:16:::0;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;12622:772:96::1;;;12761:10;:17;-1:-1:-1::0;;;;;12747:32:96::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12747:32:96::1;;12729:50;;12798:9;12793:591;12817:10;:17;12813:1;:21;12793:591;;;12895:18;::::0;;12911:1:::1;12895:18:::0;;;;;::::1;::::0;;;12859:33:::1;::::0;12895:18:::1;::::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;12962:16:96::1;::::0;;12976:1:::1;12962:16:::0;;;;;::::1;::::0;;;12859:54;;-1:-1:-1;12931:28:96::1;::::0;12962:16;-1:-1:-1;12962:16:96::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12962:16:96::1;12931:47;;13016:10;13027:1;13016:13;;;;;;;;:::i;:::-;;;;;;;12996:14;13011:1;12996:17;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1::0;;;;;12996:33:96::1;;;-1:-1:-1::0;;;;;12996:33:96::1;;;::::0;::::1;13064:6;13071:1;13064:9;;;;;;;;:::i;:::-;;;;;;;13047:11;13059:1;13047:14;;;;;;;;:::i;:::-;;;;;;:26;;;::::0;::::1;13113:256;13175:6;13213:8;13255:6;13295:14;13339:11;13113:31;:256::i;:::-;13092:15;13108:1;13092:18;;;;;;;;:::i;:::-;;;;;;:277;;;::::0;::::1;12841:543;;12836:3;;;;;:::i;:::-;;;;12793:591;;;;12622:772;13404:22;;;11185:2248:::0;;;;:::o;3225:432::-;3111:19:38;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:38;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:38;1476:19:39;:23;;;3219:66:38;;-1:-1:-1;3268:12:38;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:38;;48538:2:120;3157:201:38;;;48520:21:120;48577:2;48557:18;;;48550:30;48616:34;48596:18;;;48589:62;-1:-1:-1;;;48667:18:120;;;48660:44;48721:19;;3157:201:38;48336:410:120;3157:201:38;3368:12;:16;;-1:-1:-1;;3368:16:38;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:38;;;;;3394:65;3430:55:96::1;3448:15;3465:19;3430:17;:55::i;:::-;3515:27;:25;:27::i;:::-;3495:17;:47:::0;3552:32:::1;3571:12:::0;3552:18:::1;:32::i;:::-;3594:56;3627:22;3594:32;:56::i;:::-;3483:14:38::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:38;;;3553:14;;-1:-1:-1;48903:36:120;;3553:14:38;;48891:2:120;48876:18;3553:14:38;;;;;;;3479:99;3101:483;3225:432:96;;;;:::o;7709:352::-;7981:73;7991:10;8003:8;8013:26;8041:12;7981:9;:73::i;5576:279::-;5693:22;5704:10;5693;:22::i;:::-;5685:102;;;;-1:-1:-1;;;5685:102:96;;49152:2:120;5685:102:96;;;49134:21:120;49191:2;49171:18;;;49164:30;49230:34;49210:18;;;49203:62;49301:34;49281:18;;;49274:62;-1:-1:-1;;;49352:19:120;;;49345:34;49396:19;;5685:102:96;48950:471:120;5685:102:96;5797:51;5817:10;5829:18;5797:19;:51::i;2321:198:37:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:37;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:37;;49628:2:120;2401:73:37::1;::::0;::::1;49610:21:120::0;49667:2;49647:18;;;49640:30;49706:34;49686:18;;;49679:62;-1:-1:-1;;;49757:18:120;;;49750:36;49803:19;;2401:73:37::1;49426:402:120::0;2401:73:37::1;2484:28;2503:8;2484:18;:28::i;40311:227:96:-:0;40359:7;40399:17;40382:13;:34;40378:154;;;-1:-1:-1;40439:17:96;;;40311:227::o;40378:154::-;40494:27;:25;:27::i;:::-;40487:34;;40311:227;:::o;4938:439:101:-;2284:14;;;;;;;;;-1:-1:-1;;;;;2284:14:101;-1:-1:-1;;;;;2284:23:101;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2270:39:101;:10;-1:-1:-1;;;;;2270:39:101;;2262:94;;;;-1:-1:-1;;;2262:94:101;;;;;;;:::i;:::-;5205:7:::1;;5204:8;5182:15;5181:16;5169:7;;5168:8;5167:31;5166:47;5145:138;;;::::0;-1:-1:-1;;;5145:138:101;;50035:2:120;5145:138:101::1;::::0;::::1;50017:21:120::0;50074:2;50054:18;;;50047:30;50113:34;50093:18;;;50086:62;50184:26;50164:18;;;50157:54;50228:19;;5145:138:101::1;49833:420:120::0;5145:138:101::1;5293:7;:25:::0;;;5333:37:::1;::::0;160:25:120;;;5342:10:101::1;::::0;5333:37:::1;::::0;148:2:120;133:18;5333:37:101::1;14:177:120::0;36033:2579:96;36248:7;-1:-1:-1;;;;;36288:20:96;;36267:135;;;;-1:-1:-1;;;36267:135:96;;50460:2:120;36267:135:96;;;50442:21:120;50499:2;50479:18;;;50472:30;50538:34;50518:18;;;50511:62;50609:34;50589:18;;;50582:62;-1:-1:-1;;;50660:19:120;;;50653:47;50717:19;;36267:135:96;50258:484:120;36267:135:96;36420:17;;36412:112;;;;-1:-1:-1;;;36412:112:96;;50949:2:120;36412:112:96;;;50931:21:120;50988:2;50968:18;;;50961:30;51027:34;51007:18;;;51000:62;51098:34;51078:18;;;51071:62;-1:-1:-1;;;51149:19:120;;;51142:44;51203:19;;36412:112:96;50747:481:120;36412:112:96;36678:9;36673:1213;36697:10;:17;36693:1;:21;36673:1213;;;-1:-1:-1;;;;;36781:22:96;;;36777:166;;36823:105;36858:8;36876:6;36894:10;36905:1;36894:13;;;;;;;;:::i;:::-;;;;;;;36917:6;36924:1;36917:9;;;;;;;;:::i;:::-;;;;;;;36823:23;:105::i;:::-;2135:42;-1:-1:-1;;;;;37034:39:96;:10;37045:1;37034:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;37034:39:96;;37030:786;;;37542:15;-1:-1:-1;;;;;37542:28:96;;37571:6;37579;37586:1;37579:9;;;;;;;;:::i;:::-;;;;;;;37542:47;;;;;;;;;;;;;;;-1:-1:-1;;;;;51425:32:120;;;;51407:51;;51489:2;51474:18;;51467:34;51395:2;51380:18;;51233:274;37542:47:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37030:786;;;37739:15;-1:-1:-1;;;;;37739:28:96;;37768:6;37776:10;37787:1;37776:13;;;;;;;;:::i;:::-;;;;;;;37791:6;37798:1;37791:9;;;;;;;;:::i;:::-;;;;;;;37739:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37030:786;37858:3;;36673:1213;;;-1:-1:-1;;;;;;37973:35:96;;37957:13;37973:35;;;:27;:35;;;;;;;;;;;38018:37;37973:35;38018:37;:::i;:::-;;;;;;38066:28;38097:257;;;;;;;;38130:6;-1:-1:-1;;;;;38097:257:96;;;;;38163:8;-1:-1:-1;;;;;38097:257:96;;;;;38197:10;-1:-1:-1;;;;;38097:257:96;;;;;38228:5;38097:257;;;;38266:12;38097:257;;;;;;38305:10;38097:257;;;;38337:6;38097:257;;;38066:288;;38365:22;38390:35;38414:10;38390:23;:35::i;:::-;38473:34;;;;:18;:34;;;;;;;:41;;-1:-1:-1;;38473:41:96;38510:4;38473:41;;;38530:44;38365:60;;-1:-1:-1;38530:44:96;;;;38365:60;;38563:10;;38530:44;:::i;:::-;;;;;;;;38591:14;36033:2579;-1:-1:-1;;;;;;;;36033:2579:96:o;25841:907::-;26020:1;25973:35;;;;:18;:35;:::i;:::-;-1:-1:-1;;;;;25973:49:96;;;25952:180;;;;-1:-1:-1;;;25952:180:96;;52113:2:120;25952:180:96;;;52095:21:120;52152:2;52132:18;;;52125:30;52191:34;52171:18;;;52164:62;52262:34;52242:18;;;52235:62;-1:-1:-1;;;52313:19:120;;;52306:51;52374:19;;25952:180:96;51911:488:120;25952:180:96;1991:15;26163:43;;;;;;;;:::i;:::-;:79;;;;26142:234;;;;-1:-1:-1;;;26142:234:96;;52856:2:120;26142:234:96;;;52838:21:120;52895:3;52875:18;;;52868:31;52935:34;52915:18;;;52908:62;53006:34;52986:18;;;52979:62;53078:34;53057:19;;;53050:63;-1:-1:-1;;;53129:19:120;;;53122:43;53182:19;;26142:234:96;52654:553:120;26142:234:96;-1:-1:-1;;;;;26454:26:96;;;;;;:16;:26;;;;;;;:51;;;-1:-1:-1;;;26454:51:96;;;;;26407:43;;;;;;;;;:::i;:::-;:98;;;;26386:228;;;;-1:-1:-1;;;26386:228:96;;53414:2:120;26386:228:96;;;53396:21:120;53453:2;53433:18;;;53426:30;53492:34;53472:18;;;53465:62;53563:34;53543:18;;;53536:62;-1:-1:-1;;;53614:19:120;;;53607:50;53674:19;;26386:228:96;53212:487:120;26386:228:96;-1:-1:-1;;;;;26624:26:96;;;;;;:16;:26;;;;;26653:18;;26624:47;26653:18;26624:26;:47;:::i;:::-;-1:-1:-1;;26686:55:96;;26710:10;;26686:55;;;;26722:18;;26686:55;:::i;27578:2763::-;5767:7:101;;1268:1:96;;5738::101;5767:14;;;5766:24;2780:14;2772:52;;;;-1:-1:-1;;;2772:52:101;;;;;;;:::i;:::-;27815:19:96::1;27827:6;27815:11;:19::i;:::-;27814:20;27806:98;;;::::0;-1:-1:-1;;;27806:98:96;;54871:2:120;27806:98:96::1;::::0;::::1;54853:21:120::0;54910:2;54890:18;;;54883:30;54949:34;54929:18;;;54922:62;55020:34;55000:18;;;54993:62;-1:-1:-1;;;55071:19:120;;;55064:32;55113:19;;27806:98:96::1;54669:469:120::0;27806:98:96::1;27922:20;27933:8;27922:10;:20::i;:::-;27914:102;;;::::0;-1:-1:-1;;;27914:102:96;;55345:2:120;27914:102:96::1;::::0;::::1;55327:21:120::0;55384:2;55364:18;;;55357:30;55423:34;55403:18;;;55396:62;55494:34;55474:18;;;55467:62;-1:-1:-1;;;55545:19:120;;;55538:36;55591:19;;27914:102:96::1;55143:473:120::0;27914:102:96::1;-1:-1:-1::0;;;;;28182:26:96;;::::1;28152:27;28182:26:::0;;;:16:::1;:26;::::0;;;;:45:::1;;::::0;::::1;28644:33:::0;;;::::1;::::0;:70:::1;;-1:-1:-1::0;28681:10:96::1;-1:-1:-1::0;;;;;28681:33:96;::::1;;;28644:70;:96;;;;-1:-1:-1::0;28718:10:96::1;-1:-1:-1::0;;;;;28718:22:96;::::1;;;28644:96;28640:1171;;;28860:15;28823:26;:33;;;:52;;28798:166;;;::::0;-1:-1:-1;;;28798:166:96;;55823:2:120;28798:166:96::1;::::0;::::1;55805:21:120::0;55862:2;55842:18;;;55835:30;55901:34;55881:18;;;55874:62;55972:25;55952:18;;;55945:53;56015:19;;28798:166:96::1;55621:419:120::0;28798:166:96::1;-1:-1:-1::0;;;;;29096:50:96;::::1;;::::0;;;:29:::1;:50;::::0;;;;;;;:64;;;;;;;;;::::1;;29095:65;29070:179;;;::::0;-1:-1:-1;;;29070:179:96;;56247:2:120;29070:179:96::1;::::0;::::1;56229:21:120::0;56286:2;56266:18;;;56259:30;56325:34;56305:18;;;56298:62;56396:25;56376:18;;;56369:53;56439:19;;29070:179:96::1;56045:419:120::0;29070:179:96::1;-1:-1:-1::0;;;;;29263:50:96;::::1;;::::0;;;:29:::1;:50;::::0;;;;;;;:64;;;;;;;:71;;-1:-1:-1;;29263:71:96::1;29330:4;29263:71;::::0;;29527:33;::::1;::::0;29419:155:::1;::::0;29474:6;;29482:8;;29293:19;;29314:12;;29419:37:::1;:155::i;:::-;29390:184;;29647:153;29709:19;29730:18;29750:26;:36;;;29647:44;:153::i;:::-;28742:1069;28640:1171;-1:-1:-1::0;;;;;29914:19:96;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;:30;;-1:-1:-1;;;;;;29914:30:96::1;::::0;;::::1;::::0;;::::1;::::0;;29959:33;::::1;::::0;29914:19;29959:33:::1;30004:29;30035:23:::0;30062:28:::1;30083:6;30062:20;:28::i;:::-;30003:87;;;;30106:9;30101:234;30125:10;:17;30121:1;:21;30101:234;;;30159:105;30194:8;30212:6;30230:10;30241:1;30230:13;;;;;;;;:::i;:::-;;;;;;;30253:6;30260:1;30253:9;;;;;;;;:::i;:::-;;;;;;;30159:23;:105::i;:::-;30307:3;;30101:234;;;;27796:2545;;;27578:2763:::0;;;;;:::o;6081:374:101:-;-1:-1:-1;;;;;6198:40:101;;6177:160;;;;-1:-1:-1;;;6177:160:101;;56671:2:120;6177:160:101;;;56653:21:120;56710:2;56690:18;;;56683:30;56749:34;56729:18;;;56722:62;56820:34;56800:18;;;56793:62;-1:-1:-1;;;56871:19:120;;;56864:40;56921:19;;6177:160:101;56469:477:120;6177:160:101;6370:14;;6352:52;;;-1:-1:-1;;;;;6370:14:101;;;57213:34:120;;57283:15;;;57278:2;57263:18;;57256:43;6352:52:101;;57148:18:120;6352:52:101;;;;;;;6414:14;:34;;-1:-1:-1;;;;;;6414:34:101;-1:-1:-1;;;;;6414:34:101;;;;;;;;;;6081:374::o;35411:308:96:-;-1:-1:-1;;;;;35594:24:96;;;;;;;:14;:24;;;;;;;;:34;;;;;;;;;;;:44;;35632:6;;35594:24;:44;;35632:6;;35594:44;:::i;:::-;;;;;;;;35677:8;-1:-1:-1;;;;;35653:59:96;;35687:6;35695:8;35705:6;35653:59;;;;;;;;:::i;35033:247::-;-1:-1:-1;;;;;35155:24:96;;;;;;;:14;:24;;;;;;;;:34;;;;;;;;;;;:44;;35193:6;;35155:24;:44;;35193:6;;35155:44;:::i;:::-;;;;;;;;35238:8;-1:-1:-1;;;;;35214:59:96;;35248:6;35256:8;35266:6;35214:59;;;;;;;;:::i;30684:4218::-;30890:22;30915:35;;30939:10;30915:35;:::i;:::-;30969:34;;;;:18;:34;;;;;;30890:60;;-1:-1:-1;30969:34:96;;30961:109;;;;-1:-1:-1;;;30961:109:96;;57721:2:120;30961:109:96;;;57703:21:120;57760:2;57740:18;;;57733:30;-1:-1:-1;;;;;;;;;;;57779:18:120;;;57772:62;57870:32;57850:18;;;57843:60;57920:19;;30961:109:96;57519:426:120;30961:109:96;31126:21;;31151:12;;31102:21;;;;;;;;:::i;:::-;:45;;;;;;:::i;:::-;:61;;31081:195;;;;-1:-1:-1;;;31081:195:96;;58152:2:120;31081:195:96;;;58134:21:120;58191:2;58171:18;;;58164:30;-1:-1:-1;;;;;;;;;;;58210:18:120;;;58203:62;58301:34;58281:18;;;58274:62;58373:25;58352:19;;;58345:54;58416:19;;31081:195:96;57950:491:120;31081:195:96;31322:21;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31308:35:96;:10;-1:-1:-1;;;;;31308:35:96;;31287:157;;;;-1:-1:-1;;;31287:157:96;;58648:2:120;31287:157:96;;;58630:21:120;58687:2;58667:18;;;58660:30;-1:-1:-1;;;;;;;;;;;58706:18:120;;;58699:62;58797:34;58777:18;;;58770:62;-1:-1:-1;;;58848:19:120;;;58841:42;58900:19;;31287:157:96;58446:479:120;31287:157:96;31459:15;31455:211;;;31532:21;;;;:10;:21;:::i;:::-;31515:45;;;-1:-1:-1;31490:165:96;;;;-1:-1:-1;;;31490:165:96;;59132:2:120;31490:165:96;;;59114:21:120;59171:2;59151:18;;;59144:30;-1:-1:-1;;;;;;;;;;;59190:18:120;;;59183:62;59281:31;59261:18;;;59254:59;59330:19;;31490:165:96;58930:425:120;31490:165:96;31737:34;;;;:18;:34;;;;;31730:41;;-1:-1:-1;;31730:41:96;;;31913:2932;;;;31953:9;31948:437;31972:21;;;;:10;:21;:::i;:::-;:28;;31968:1;:32;31948:437;;;32021:278;32075:17;;;;:10;:17;:::i;:::-;32126:10;32168:21;;;;:10;:21;:::i;:::-;32190:1;32168:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32222:17;;;;:10;:17;:::i;:::-;32240:1;32222:20;;;;;;;:::i;:::-;;;;;;;32271:6;;32278:1;32271:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32021:23;:278::i;:::-;32349:3;;31948:437;;;;31913:2932;;;32596:10;32558:23;32584;;;:11;:23;;;;;;-1:-1:-1;;;;;32584:23:96;;32621:2214;32645:21;;;;:10;:21;:::i;:::-;:28;;32641:1;:32;32621:2214;;;2135:42;32956:21;;;;:10;:21;:::i;:::-;32978:1;32956:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32956:50:96;;32952:1798;;;33030:14;33047:17;;;;:10;:17;:::i;:::-;33030:34;-1:-1:-1;33347:36:96;-1:-1:-1;;;;;33410:15:96;:25;;33030:34;33463:17;;;;:10;:17;:::i;:::-;33481:1;33463:20;;;;;;;:::i;:::-;33410:75;;-1:-1:-1;;;;;;33410:75:96;;;;;;;-1:-1:-1;;;;;51425:32:120;;;33410:75:96;;;51407:51:120;33463:20:96;;;;;;;51474:18:120;;;51467:34;-1:-1:-1;51380:18:120;;33410:75:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33534:19:96;;;33507:24;33534:19;;;:11;:19;;;;;;33347:138;;-1:-1:-1;33534:19:96;33633:30;;33629:451;;33691:366;33755:16;33894:6;33940:21;;;;:10;:21;:::i;:::-;33962:1;33940:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34002:28;33691:23;:366::i;:::-;33008:1090;;;32952:1798;;;-1:-1:-1;;;;;34126:15:96;:25;;34152:10;34164:21;;;;:10;:21;:::i;:::-;34186:1;34164:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34190:17;;;;:10;:17;:::i;:::-;34208:1;34190:20;;;;;;;:::i;:::-;;;;;;;34126:85;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;34291:29:96;;;34287:445;;34348:361;34412:15;34550:10;34600:21;;;;:10;:21;:::i;:::-;34622:1;34600:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34662:17;;;;:10;:17;:::i;:::-;34680:1;34662:20;;;;;;;:::i;:::-;;;;;;;34348:23;:361::i;:::-;34799:3;;32621:2214;;;;32544:2301;31913:2932;34860:35;;160:25:120;;;34860:35:96;;148:2:120;133:18;34860:35:96;;;;;;;30880:4022;30684:4218;;;;;:::o;1599:130:37:-;1513:6;;-1:-1:-1;;;;;1513:6:37;929:10:40;1662:23:37;1654:68;;;;-1:-1:-1;;;1654:68:37;;60290:2:120;1654:68:37;;;60272:21:120;;;60309:18;;;60302:30;60368:34;60348:18;;;60341:62;60420:18;;1654:68:37;60088:356:120;2673:187:37;2765:6;;;-1:-1:-1;;;;;2781:17:37;;;-1:-1:-1;;;;;;2781:17:37;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1281:963:98:-;-1:-1:-1;;;;;1476:19:39;;;:23;1762:476:98;;1825:56;;-1:-1:-1;;;1825:56:98;;;1885:18;-1:-1:-1;;;;;1825:33:98;;;541:10;;1825:56;;1859:10;;1871:9;;1825:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1825:78:98;;1800:220;;;;-1:-1:-1;;;1800:220:98;;61617:2:120;1800:220:98;;;61599:21:120;61656:2;61636:18;;;61629:30;61695:34;61675:18;;;61668:62;61766:34;61746:18;;;61739:62;-1:-1:-1;;;61817:19:120;;;61810:50;61877:19;;1800:220:98;61415:487:120;1762:476:98;2116:6;-1:-1:-1;;;;;2076:46:98;:36;2090:10;2102:9;2076:13;:36::i;:::-;-1:-1:-1;;;;;2076:46:98;;2051:176;;;;-1:-1:-1;;;2051:176:98;;62109:2:120;2051:176:98;;;62091:21:120;62148:2;62128:18;;;62121:30;62187:34;62167:18;;;62160:62;62258:34;62238:18;;;62231:62;-1:-1:-1;;;62309:19:120;;;62302:38;62357:19;;2051:176:98;61907:475:120;2956:441:101;3090:14;;-1:-1:-1;;;;;3090:14:101;3082:37;:79;;;;-1:-1:-1;;;;;;3123:38:101;;;;3082:79;3061:197;;;;-1:-1:-1;;;3061:197:101;;62589:2:120;3061:197:101;;;62571:21:120;62628:2;62608:18;;;62601:30;62667:34;62647:18;;;62640:62;62738:34;62718:18;;;62711:62;-1:-1:-1;;;62789:19:120;;;62782:38;62837:19;;3061:197:101;62387:475:120;3061:197:101;3268:7;:26;;;3309:36;;160:25:120;;;3316:10:101;;3309:36;;148:2:120;133:18;3309:36:101;;;;;;;3355:35;3374:15;3355:18;:35::i;48242:193:96:-;48376:19;;;;;;;;;;;-1:-1:-1;;;48376:19:96;;;;;48338:89;;695:80:97;48338:89:96;;;63098:25:120;48366:30:96;63139:18:120;;;63132:34;48398:13:96;63182:18:120;;;63175:34;48421:4:96;63225:18:120;;;;63218:60;;;;48338:89:96;;;;;;;;;;63070:19:120;;;;48338:89:96;;;48328:100;;;;;;48242:193::o;39369:470::-;2235:6:97;39497:22:96;:53;;39476:214;;;;-1:-1:-1;;;39476:214:96;;63491:2:120;39476:214:96;;;63473:21:120;63530:3;63510:18;;;63503:31;63570:34;63550:18;;;63543:62;63641:34;63621:18;;;63614:62;63713:34;63692:19;;;63685:63;-1:-1:-1;;;63764:19:120;;;63757:49;63823:19;;39476:214:96;63289:559:120;39476:214:96;39730:21;;39705:71;;;39770:25:120;;;39826:2;39811:18;;39804:34;;;39705:71:96;;39743:18:120;39705:71:96;;;;;;;39786:21;:46;39369:470::o;38903:460::-;-1:-1:-1;;;;;39091:34:96;;2135:42;39091:34;39087:270;;;39141:99;;-1:-1:-1;;;39141:99:96;;-1:-1:-1;;;;;39141:15:96;:38;;;;:99;;39191:6;;39212:10;;39232:6;;39141:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39087:270;;;39271:75;;-1:-1:-1;;;39271:75:96;;-1:-1:-1;;;;;64808:15:120;;;39271:75:96;;;64790:34:120;64860:15;;;64840:18;;;64833:43;64892:18;;;64885:34;;;64955:15;;;64935:18;;;64928:43;39271:15:96;:38;;;;64724:19:120;;39271:75:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:227:55;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;:::-;-1:-1:-1;4613:9:55;4402:227;-1:-1:-1;;;4402:227:55:o;2243:1373::-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:55;;-1:-1:-1;3563:35:55;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:55;;65184:2:120;766:34:55;;;65166:21:120;65223:2;65203:18;;;65196:30;65262:26;65242:18;;;65235:54;65306:18;;766:34:55;64982:348:120;708:465:55;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:55;;65537:2:120;881:41:55;;;65519:21:120;65576:2;65556:18;;;65549:30;65615:33;65595:18;;;65588:61;65666:18;;881:41:55;65335:355:120;817:356:55;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:55;;65897:2:120;998:44:55;;;65879:21:120;65936:2;65916:18;;;65909:30;65975:34;65955:18;;;65948:62;-1:-1:-1;;;66026:18:120;;;66019:32;66068:19;;998:44:55;65695:398:120;939:234:55;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:55;;66300:2:120;1118:44:55;;;66282:21:120;66339:2;66319:18;;;66312:30;66378:34;66358:18;;;66351:62;-1:-1:-1;;;66429:18:120;;;66422:32;66471:19;;1118:44:55;66098:398:120;5810:1603:55;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:55;;-1:-1:-1;6962:30:55;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:55;;-1:-1:-1;7071:30:55;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;66728:25:120;;;66801:4;66789:17;;66769:18;;;66762:45;;;;66823:18;;;66816:34;;;66866:18;;;66859:34;;;7224:24:55;;66700:19:120;;7224:24:55;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:55;;-1:-1:-1;;7224:24:55;;;-1:-1:-1;;;;;;;7262:20:55;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:55;;-1:-1:-1;5810:1603:55;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:55;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;196:131:120:-;-1:-1:-1;;;;;271:31:120;;261:42;;251:70;;317:1;314;307:12;332:134;400:20;;429:31;400:20;429:31;:::i;:::-;332:134;;;:::o;471:667::-;566:6;574;582;590;598;651:3;639:9;630:7;626:23;622:33;619:53;;;668:1;665;658:12;619:53;707:9;694:23;726:31;751:5;726:31;:::i;:::-;776:5;-1:-1:-1;833:2:120;818:18;;805:32;846:33;805:32;846:33;:::i;:::-;898:7;-1:-1:-1;957:2:120;942:18;;929:32;970:33;929:32;970:33;:::i;:::-;471:667;;;;-1:-1:-1;1022:7:120;;1076:2;1061:18;;1048:32;;-1:-1:-1;1127:3:120;1112:19;1099:33;;471:667;-1:-1:-1;;471:667:120:o;1143:398::-;1237:8;1247:6;1301:3;1294:4;1286:6;1282:17;1278:27;1268:55;;1319:1;1316;1309:12;1268:55;-1:-1:-1;1342:20:120;;-1:-1:-1;;;;;1374:30:120;;1371:50;;;1417:1;1414;1407:12;1371:50;1454:4;1446:6;1442:17;1430:29;;1514:3;1507:4;1497:6;1494:1;1490:14;1482:6;1478:27;1474:38;1471:47;1468:67;;;1531:1;1528;1521:12;1546:511;1675:6;1683;1736:2;1724:9;1715:7;1711:23;1707:32;1704:52;;;1752:1;1749;1742:12;1704:52;1792:9;1779:23;-1:-1:-1;;;;;1817:6:120;1814:30;1811:50;;;1857:1;1854;1847:12;1811:50;1896:101;1989:7;1980:6;1969:9;1965:22;1896:101;:::i;:::-;2016:8;;1870:127;;-1:-1:-1;1546:511:120;-1:-1:-1;;;;1546:511:120:o;2062:632::-;2233:2;2285:21;;;2355:13;;2258:18;;;2377:22;;;2204:4;;2233:2;2456:15;;;;2430:2;2415:18;;;2204:4;2499:169;2513:6;2510:1;2507:13;2499:169;;;2574:13;;2562:26;;2643:15;;;;2608:12;;;;2535:1;2528:9;2499:169;;;-1:-1:-1;2685:3:120;;2062:632;-1:-1:-1;;;;;;2062:632:120:o;2699:163::-;2767:5;2812:2;2803:6;2798:3;2794:16;2790:25;2787:45;;;2828:1;2825;2818:12;2787:45;-1:-1:-1;2850:6:120;2699:163;-1:-1:-1;2699:163:120:o;2867:348::-;2919:8;2929:6;2983:3;2976:4;2968:6;2964:17;2960:27;2950:55;;3001:1;2998;2991:12;2950:55;-1:-1:-1;3024:20:120;;-1:-1:-1;;;;;3056:30:120;;3053:50;;;3099:1;3096;3089:12;3053:50;3136:4;3128:6;3124:17;3112:29;;3188:3;3181:4;3172:6;3164;3160:19;3156:30;3153:39;3150:59;;;3205:1;3202;3195:12;3220:555;3336:6;3344;3352;3405:3;3393:9;3384:7;3380:23;3376:33;3373:53;;;3422:1;3419;3412:12;3373:53;3445:62;3499:7;3488:9;3445:62;:::i;:::-;3435:72;;3558:2;3547:9;3543:18;3530:32;-1:-1:-1;;;;;3577:6:120;3574:30;3571:50;;;3617:1;3614;3607:12;3571:50;3656:59;3707:7;3698:6;3687:9;3683:22;3656:59;:::i;:::-;3220:555;;3734:8;;-1:-1:-1;3630:85:120;;-1:-1:-1;;;;3220:555:120:o;3780:272::-;3864:6;3917:2;3905:9;3896:7;3892:23;3888:32;3885:52;;;3933:1;3930;3923:12;3885:52;3972:9;3959:23;3991:31;4016:5;3991:31;:::i;:::-;4041:5;3780:272;-1:-1:-1;;;3780:272:120:o;4057:475::-;4153:6;4161;4169;4222:2;4210:9;4201:7;4197:23;4193:32;4190:52;;;4238:1;4235;4228:12;4190:52;4277:9;4264:23;4296:31;4321:5;4296:31;:::i;:::-;4346:5;-1:-1:-1;4403:2:120;4388:18;;4375:32;4416:33;4375:32;4416:33;:::i;:::-;4057:475;;4468:7;;-1:-1:-1;;;4522:2:120;4507:18;;;;4494:32;;4057:475::o;4537:180::-;4596:6;4649:2;4637:9;4628:7;4624:23;4620:32;4617:52;;;4665:1;4662;4655:12;4617:52;-1:-1:-1;4688:23:120;;4537:180;-1:-1:-1;4537:180:120:o;5617:1599::-;5882:6;5890;5898;5906;5914;5922;5930;5938;5991:3;5979:9;5970:7;5966:23;5962:33;5959:53;;;6008:1;6005;5998:12;5959:53;6048:9;6035:23;-1:-1:-1;;;;;6118:2:120;6110:6;6107:14;6104:34;;;6134:1;6131;6124:12;6104:34;6173:101;6266:7;6257:6;6246:9;6242:22;6173:101;:::i;:::-;6293:8;;-1:-1:-1;6147:127:120;-1:-1:-1;6381:2:120;6366:18;;6353:32;;-1:-1:-1;6397:16:120;;;6394:36;;;6426:1;6423;6416:12;6394:36;6465:103;6560:7;6549:8;6538:9;6534:24;6465:103;:::i;:::-;6587:8;;-1:-1:-1;6439:129:120;-1:-1:-1;6675:2:120;6660:18;;6647:32;;-1:-1:-1;6691:16:120;;;6688:36;;;6720:1;6717;6710:12;6688:36;6759:103;6854:7;6843:8;6832:9;6828:24;6759:103;:::i;:::-;6881:8;;-1:-1:-1;6733:129:120;-1:-1:-1;6969:2:120;6954:18;;6941:32;;-1:-1:-1;6985:16:120;;;6982:36;;;7014:1;7011;7004:12;6982:36;;7053:103;7148:7;7137:8;7126:9;7122:24;7053:103;:::i;:::-;5617:1599;;;;-1:-1:-1;5617:1599:120;;-1:-1:-1;5617:1599:120;;;;;;7175:8;-1:-1:-1;;;5617:1599:120:o;7221:315::-;7289:6;7297;7350:2;7338:9;7329:7;7325:23;7321:32;7318:52;;;7366:1;7363;7356:12;7318:52;7405:9;7392:23;7424:31;7449:5;7424:31;:::i;:::-;7474:5;7526:2;7511:18;;;;7498:32;;-1:-1:-1;;;7221:315:120:o;8518:388::-;8586:6;8594;8647:2;8635:9;8626:7;8622:23;8618:32;8615:52;;;8663:1;8660;8653:12;8615:52;8702:9;8689:23;8721:31;8746:5;8721:31;:::i;:::-;8771:5;-1:-1:-1;8828:2:120;8813:18;;8800:32;8841:33;8800:32;8841:33;:::i;:::-;8893:7;8883:17;;;8518:388;;;;;:::o;8911:127::-;8972:10;8967:3;8963:20;8960:1;8953:31;9003:4;9000:1;8993:15;9027:4;9024:1;9017:15;9043:363;9210:2;9195:18;;9243:1;9232:13;;9222:144;;9288:10;9283:3;9279:20;9276:1;9269:31;9323:4;9320:1;9313:15;9351:4;9348:1;9341:15;9222:144;9375:25;;;9043:363;:::o;9411:127::-;9472:10;9467:3;9463:20;9460:1;9453:31;9503:4;9500:1;9493:15;9527:4;9524:1;9517:15;9543:253;9615:2;9609:9;9657:4;9645:17;;-1:-1:-1;;;;;9677:34:120;;9713:22;;;9674:62;9671:88;;;9739:18;;:::i;:::-;9775:2;9768:22;9543:253;:::o;9801:257::-;9873:4;9867:11;;;9905:17;;-1:-1:-1;;;;;9937:34:120;;9973:22;;;9934:62;9931:88;;;9999:18;;:::i;10063:253::-;10135:2;10129:9;10177:4;10165:17;;-1:-1:-1;;;;;10197:34:120;;10233:22;;;10194:62;10191:88;;;10259:18;;:::i;10321:275::-;10392:2;10386:9;10457:2;10438:13;;-1:-1:-1;;10434:27:120;10422:40;;-1:-1:-1;;;;;10477:34:120;;10513:22;;;10474:62;10471:88;;;10539:18;;:::i;:::-;10575:2;10568:22;10321:275;;-1:-1:-1;10321:275:120:o;10601:121::-;10686:10;10679:5;10675:22;10668:5;10665:33;10655:61;;10712:1;10709;10702:12;10727:132;10794:20;;10823:30;10794:20;10823:30;:::i;10864:194::-;10935:4;-1:-1:-1;;;;;10960:6:120;10957:30;10954:56;;;10990:18;;:::i;:::-;-1:-1:-1;11035:1:120;11031:14;11047:4;11027:25;;10864:194::o;11063:759::-;11128:5;11181:3;11174:4;11166:6;11162:17;11158:27;11148:55;;11199:1;11196;11189:12;11148:55;11235:6;11222:20;11261:4;11285:71;11301:54;11352:2;11301:54;:::i;:::-;11285:71;:::i;:::-;11390:15;;;11476:1;11472:10;;;;11460:23;;11456:32;;;11421:12;;;;11500:15;;;11497:35;;;11528:1;11525;11518:12;11497:35;11564:2;11556:6;11552:15;11576:217;11592:6;11587:3;11584:15;11576:217;;;11672:3;11659:17;11689:31;11714:5;11689:31;:::i;:::-;11733:18;;11771:12;;;;11609;;11576:217;;;-1:-1:-1;11811:5:120;11063:759;-1:-1:-1;;;;;;11063:759:120:o;11827:673::-;11881:5;11934:3;11927:4;11919:6;11915:17;11911:27;11901:55;;11952:1;11949;11942:12;11901:55;11988:6;11975:20;12014:4;12038:71;12054:54;12105:2;12054:54;:::i;12038:71::-;12143:15;;;12229:1;12225:10;;;;12213:23;;12209:32;;;12174:12;;;;12253:15;;;12250:35;;;12281:1;12278;12271:12;12250:35;12317:2;12309:6;12305:15;12329:142;12345:6;12340:3;12337:15;12329:142;;;12411:17;;12399:30;;12449:12;;;;12362;;12329:142;;12505:939;12562:5;12610:4;12598:9;12593:3;12589:19;12585:30;12582:50;;;12628:1;12625;12618:12;12582:50;12650:22;;:::i;:::-;12641:31;;12695:29;12714:9;12695:29;:::i;:::-;12688:5;12681:44;12757:38;12791:2;12780:9;12776:18;12757:38;:::i;:::-;12752:2;12745:5;12741:14;12734:62;12828:38;12862:2;12851:9;12847:18;12828:38;:::i;:::-;12823:2;12816:5;12812:14;12805:62;12927:2;12916:9;12912:18;12899:32;12894:2;12887:5;12883:14;12876:56;12965:38;12998:3;12987:9;12983:19;12965:38;:::i;:::-;12959:3;12952:5;12948:15;12941:63;13055:3;13044:9;13040:19;13027:33;-1:-1:-1;;;;;13120:2:120;13112:6;13109:14;13106:34;;;13136:1;13133;13126:12;13106:34;13173:68;13237:3;13228:6;13217:9;13213:22;13173:68;:::i;:::-;13167:3;13160:5;13156:15;13149:93;13295:3;13284:9;13280:19;13267:33;13251:49;;13325:2;13315:8;13312:16;13309:36;;;13341:1;13338;13331:12;13309:36;;13378:59;13433:3;13422:8;13411:9;13407:24;13378:59;:::i;:::-;13372:3;13365:5;13361:15;13354:84;;12505:939;;;;:::o;13449:352::-;13537:6;13590:2;13578:9;13569:7;13565:23;13561:32;13558:52;;;13606:1;13603;13596:12;13558:52;13646:9;13633:23;-1:-1:-1;;;;;13671:6:120;13668:30;13665:50;;;13711:1;13708;13701:12;13665:50;13734:61;13787:7;13778:6;13767:9;13763:22;13734:61;:::i;:::-;13724:71;13449:352;-1:-1:-1;;;;13449:352:120:o;13806:269::-;13863:6;13916:2;13904:9;13895:7;13891:23;13887:32;13884:52;;;13932:1;13929;13922:12;13884:52;13971:9;13958:23;14021:4;14014:5;14010:16;14003:5;14000:27;13990:55;;14041:1;14038;14031:12;14080:504;14162:5;14210:4;14198:9;14193:3;14189:19;14185:30;14182:50;;;14228:1;14225;14218:12;14182:50;14250:22;;:::i;:::-;14241:31;;14309:9;14296:23;14328:33;14353:7;14328:33;:::i;:::-;14370:22;;14444:2;14429:18;;14416:32;14492:26;14479:40;;14467:53;;14457:81;;14534:1;14531;14524:12;14457:81;14565:2;14554:14;;14547:31;14558:5;14080:504;-1:-1:-1;;14080:504:120:o;14589:2353::-;14725:6;14756:2;14799;14787:9;14778:7;14774:23;14770:32;14767:52;;;14815:1;14812;14805:12;14767:52;14855:9;14842:23;-1:-1:-1;;;;;14925:2:120;14917:6;14914:14;14911:34;;;14941:1;14938;14931:12;14911:34;14979:6;14968:9;14964:22;14954:32;;15024:7;15017:4;15013:2;15009:13;15005:27;14995:55;;15046:1;15043;15036:12;14995:55;15082:2;15069:16;15105:71;15121:54;15172:2;15121:54;:::i;15105:71::-;15210:15;;;15292:1;15288:10;;;;15280:19;;15276:28;;;15241:12;;;;15316:19;;;15313:39;;;15348:1;15345;15338:12;15313:39;15380:2;15376;15372:11;15392:1520;15408:6;15403:3;15400:15;15392:1520;;;15494:3;15481:17;15530:2;15517:11;15514:19;15511:109;;;15574:1;15603:2;15599;15592:14;15511:109;15643:20;;15686:4;15714:16;;;-1:-1:-1;;15710:30:120;15706:39;-1:-1:-1;15703:129:120;;;15786:1;15815:2;15811;15804:14;15703:129;15858:22;;:::i;:::-;15930:2;15926;15922:11;15909:25;15963:2;15953:8;15950:16;15947:106;;;16007:1;16036:2;16032;16025:14;15947:106;16080:76;16148:7;16143:2;16132:8;16128:2;16124:17;16120:26;16080:76;:::i;:::-;16073:5;16066:91;;16181:2;16233:3;16229:2;16225:12;16212:26;16267:2;16257:8;16254:16;16251:109;;;16312:1;16342:3;16337;16330:16;16251:109;16396:65;16453:7;16448:2;16437:8;16433:2;16429:17;16425:26;16396:65;:::i;:::-;16391:2;16384:5;16380:14;16373:89;;16486:2;16525:32;16552:3;16548:2;16544:12;16525:32;:::i;:::-;16519:3;16512:5;16508:15;16501:57;16582:4;16571:15;;16623:76;16691:7;16685:3;16681:2;16677:12;16623:76;:::i;:::-;16606:15;;;16599:101;16737:32;16763:4;16755:13;;16737:32;:::i;:::-;16720:15;;;16713:57;16807:31;16826:11;;;16807:31;:::i;:::-;16801:3;16790:15;;16783:56;16852:18;;-1:-1:-1;;16890:12:120;;;;15425;;15392:1520;;;-1:-1:-1;16931:5:120;14589:2353;-1:-1:-1;;;;;;;;14589:2353:120:o;16947:118::-;17033:5;17026:13;17019:21;17012:5;17009:32;16999:60;;17055:1;17052;17045:12;17070:972;17227:6;17235;17243;17251;17259;17312:3;17300:9;17291:7;17287:23;17283:33;17280:53;;;17329:1;17326;17319:12;17280:53;17369:9;17356:23;-1:-1:-1;;;;;17439:2:120;17431:6;17428:14;17425:34;;;17455:1;17452;17445:12;17425:34;17478:22;;;;17534:3;17516:16;;;17512:26;17509:46;;;17551:1;17548;17541:12;17509:46;17574:2;;-1:-1:-1;17629:2:120;17614:18;;17601:32;;17645:16;;;17642:36;;;17674:1;17671;17664:12;17642:36;;17713:103;17808:7;17797:8;17786:9;17782:24;17713:103;:::i;:::-;17835:8;;-1:-1:-1;17687:129:120;-1:-1:-1;;17917:2:120;17902:18;;17889:32;;-1:-1:-1;17971:2:120;17956:18;;17943:32;17984:28;17943:32;17984:28;:::i;:::-;18031:5;18021:15;;;17070:972;;;;;;;;:::o;18459:530::-;18501:5;18554:3;18547:4;18539:6;18535:17;18531:27;18521:55;;18572:1;18569;18562:12;18521:55;18608:6;18595:20;-1:-1:-1;;;;;18630:2:120;18627:26;18624:52;;;18656:18;;:::i;:::-;18700:55;18743:2;18724:13;;-1:-1:-1;;18720:27:120;18749:4;18716:38;18700:55;:::i;:::-;18780:2;18771:7;18764:19;18826:3;18819:4;18814:2;18806:6;18802:15;18798:26;18795:35;18792:55;;;18843:1;18840;18833:12;18792:55;18908:2;18901:4;18893:6;18889:17;18882:4;18873:7;18869:18;18856:55;18956:1;18931:16;;;18949:4;18927:27;18920:38;;;;18935:7;18459:530;-1:-1:-1;;;18459:530:120:o;18994:421::-;19060:5;19108:4;19096:9;19091:3;19087:19;19083:30;19080:50;;;19126:1;19123;19116:12;19080:50;19148:22;;:::i;:::-;19139:31;;19206:9;19193:23;-1:-1:-1;;;;;19231:6:120;19228:30;19225:50;;;19271:1;19268;19261:12;19225:50;19298:45;19339:3;19330:6;19319:9;19315:22;19298:45;:::i;:::-;19291:5;19284:60;;19404:2;19393:9;19389:18;19376:32;19371:2;19364:5;19360:14;19353:56;18994:421;;;;:::o;19420:985::-;19591:6;19599;19607;19615;19623;19676:3;19664:9;19655:7;19651:23;19647:33;19644:53;;;19693:1;19690;19683:12;19644:53;19732:9;19719:23;19751:31;19776:5;19751:31;:::i;:::-;19801:5;-1:-1:-1;19858:2:120;19843:18;;19830:32;19871:33;19830:32;19871:33;:::i;:::-;19923:7;-1:-1:-1;19981:2:120;19966:18;;19953:32;-1:-1:-1;;;;;20034:14:120;;;20031:34;;;20061:1;20058;20051:12;20031:34;20084:70;20146:7;20137:6;20126:9;20122:22;20084:70;:::i;:::-;20074:80;;20207:2;20196:9;20192:18;20179:32;20163:48;;20236:2;20226:8;20223:16;20220:36;;;20252:1;20249;20242:12;20220:36;;20275:72;20339:7;20328:8;20317:9;20313:24;20275:72;:::i;:::-;19420:985;;;;-1:-1:-1;19420:985:120;;20394:3;20379:19;20366:33;;19420:985;-1:-1:-1;;;19420:985:120:o;20870:1027::-;20983:6;20991;21044:2;21032:9;21023:7;21019:23;21015:32;21012:52;;;21060:1;21057;21050:12;21012:52;21099:9;21086:23;21118:31;21143:5;21118:31;:::i;:::-;21168:5;-1:-1:-1;21224:2:120;21209:18;;21196:32;-1:-1:-1;;;;;21277:14:120;;;21274:34;;;21304:1;21301;21294:12;21274:34;21327:22;;;;21383:4;21365:16;;;21361:27;21358:47;;;21401:1;21398;21391:12;21358:47;21434:2;21428:9;21476:4;21468:6;21464:17;21531:6;21519:10;21516:22;21511:2;21499:10;21496:18;21493:46;21490:72;;;21542:18;;:::i;:::-;21578:2;21571:22;21618:16;;21646;;;21643:36;;;21675:1;21672;21665:12;21643:36;21703:44;21739:7;21728:8;21724:2;21720:17;21703:44;:::i;:::-;21695:6;21688:60;;21802:2;21798;21794:11;21781:25;21776:2;21768:6;21764:15;21757:50;21861:2;21857;21853:11;21840:25;21835:2;21827:6;21823:15;21816:50;21885:6;21875:16;;;;;20870:1027;;;;;:::o;21902:411::-;21973:6;21981;22034:2;22022:9;22013:7;22009:23;22005:32;22002:52;;;22050:1;22047;22040:12;22002:52;22090:9;22077:23;-1:-1:-1;;;;;22115:6:120;22112:30;22109:50;;;22155:1;22152;22145:12;22109:50;22194:59;22245:7;22236:6;22225:9;22221:22;22194:59;:::i;22318:525::-;22404:6;22412;22420;22428;22481:3;22469:9;22460:7;22456:23;22452:33;22449:53;;;22498:1;22495;22488:12;22449:53;22537:9;22524:23;22556:31;22581:5;22556:31;:::i;:::-;22606:5;-1:-1:-1;22663:2:120;22648:18;;22635:32;22676:33;22635:32;22676:33;:::i;:::-;22318:525;;22728:7;;-1:-1:-1;;;;22782:2:120;22767:18;;22754:32;;22833:2;22818:18;22805:32;;22318:525::o;23814:::-;23900:6;23908;23916;23924;23977:3;23965:9;23956:7;23952:23;23948:33;23945:53;;;23994:1;23991;23984:12;23945:53;24033:9;24020:23;24052:31;24077:5;24052:31;:::i;:::-;24102:5;-1:-1:-1;24154:2:120;24139:18;;24126:32;;-1:-1:-1;24210:2:120;24195:18;;24182:32;24223:33;24182:32;24223:33;:::i;:::-;23814:525;;;;-1:-1:-1;24275:7:120;;24329:2;24314:18;24301:32;;-1:-1:-1;;23814:525:120:o;24344:472::-;24408:3;24446:5;24440:12;24473:6;24468:3;24461:19;24499:4;24528:2;24523:3;24519:12;24512:19;;24565:2;24558:5;24554:14;24586:1;24596:195;24610:6;24607:1;24604:13;24596:195;;;24675:13;;-1:-1:-1;;;;;24671:39:120;24659:52;;24731:12;;;;24766:15;;;;24707:1;24625:9;24596:195;;;-1:-1:-1;24807:3:120;;24344:472;-1:-1:-1;;;;;24344:472:120:o;24821:435::-;24874:3;24912:5;24906:12;24939:6;24934:3;24927:19;24965:4;24994:2;24989:3;24985:12;24978:19;;25031:2;25024:5;25020:14;25052:1;25062:169;25076:6;25073:1;25070:13;25062:169;;;25137:13;;25125:26;;25171:12;;;;25206:15;;;;25098:1;25091:9;25062:169;;25261:495;25537:2;25526:9;25519:21;25500:4;25563:67;25626:2;25615:9;25611:18;25603:6;25563:67;:::i;:::-;25678:9;25670:6;25666:22;25661:2;25650:9;25646:18;25639:50;25706:44;25743:6;25735;25706:44;:::i;26316:573::-;26431:6;26439;26447;26500:2;26488:9;26479:7;26475:23;26471:32;26468:52;;;26516:1;26513;26506:12;26468:52;26555:9;26542:23;26574:31;26599:5;26574:31;:::i;:::-;26624:5;-1:-1:-1;26680:2:120;26665:18;;26652:32;-1:-1:-1;;;;;26696:30:120;;26693:50;;;26739:1;26736;26729:12;26693:50;26762:70;26824:7;26815:6;26804:9;26800:22;26762:70;:::i;:::-;26752:80;;;26879:2;26868:9;26864:18;26851:32;26841:42;;26316:573;;;;;:::o;26894:255::-;26989:6;27042:2;27030:9;27021:7;27017:23;27013:32;27010:52;;;27058:1;27055;27048:12;27010:52;27081:62;27135:7;27124:9;27081:62;:::i;28156:349::-;28358:2;28340:21;;;28397:2;28377:18;;;28370:30;28436:27;28431:2;28416:18;;28409:55;28496:2;28481:18;;28156:349::o;28510:127::-;28571:10;28566:3;28562:20;28559:1;28552:31;28602:4;28599:1;28592:15;28626:4;28623:1;28616:15;28642:340;28751:4;28809:11;28796:25;28903:2;28899:7;28888:8;28872:14;28868:29;28864:43;28844:18;28840:68;28830:96;;28922:1;28919;28912:12;28830:96;28943:33;;;;;28642:340;-1:-1:-1;;28642:340:120:o;28987:545::-;29080:4;29086:6;29146:11;29133:25;29240:2;29236:7;29225:8;29209:14;29205:29;29201:43;29181:18;29177:68;29167:96;;29259:1;29256;29249:12;29167:96;29286:33;;29338:20;;;-1:-1:-1;;;;;;29370:30:120;;29367:50;;;29413:1;29410;29403:12;29367:50;29446:4;29434:17;;-1:-1:-1;29497:1:120;29493:14;;;29477;29473:35;29463:46;;29460:66;;;29522:1;29519;29512:12;31012:127;31073:10;31068:3;31064:20;31061:1;31054:31;31104:4;31101:1;31094:15;31128:4;31125:1;31118:15;31144:135;31183:3;-1:-1:-1;;31204:17:120;;31201:43;;;31224:18;;:::i;:::-;-1:-1:-1;31271:1:120;31260:13;;31144:135::o;31762:686::-;31966:2;31951:18;;31991:20;;32020:31;31991:20;32020:31;:::i;:::-;-1:-1:-1;;;;;32116:14:120;;;32098:33;;32180:4;32168:17;;32155:31;;32195:33;32155:31;32195:33;:::i;:::-;32266:16;32259:4;32244:20;;32237:46;32332:4;32320:17;;32307:31;32347:32;32307:31;32347:32;:::i;:::-;32430:10;32421:7;32417:24;32410:4;32399:9;32395:20;32388:54;;31762:686;;;;:::o;32453:390::-;32612:2;32601:9;32594:21;32651:6;32646:2;32635:9;32631:18;32624:34;32708:6;32700;32695:2;32684:9;32680:18;32667:48;32764:1;32735:22;;;32759:2;32731:31;;;32724:42;;;;32827:2;32806:15;;;-1:-1:-1;;32802:29:120;32787:45;32783:54;;32453:390;-1:-1:-1;32453:390:120:o;32848:251::-;32918:6;32971:2;32959:9;32950:7;32946:23;32942:32;32939:52;;;32987:1;32984;32977:12;32939:52;33019:9;33013:16;33038:31;33063:5;33038:31;:::i;33104:406::-;33306:2;33288:21;;;33345:2;33325:18;;;33318:30;33384:34;33379:2;33364:18;;33357:62;-1:-1:-1;;;33450:2:120;33435:18;;33428:40;33500:3;33485:19;;33104:406::o;33515:419::-;33717:2;33699:21;;;33756:2;33736:18;;;33729:30;33795:34;33790:2;33775:18;;33768:62;33866:25;33861:2;33846:18;;33839:53;33924:3;33909:19;;33515:419::o;33939:245::-;34006:6;34059:2;34047:9;34038:7;34034:23;34030:32;34027:52;;;34075:1;34072;34065:12;34027:52;34107:9;34101:16;34126:28;34148:5;34126:28;:::i;34189:404::-;34391:2;34373:21;;;34430:2;34410:18;;;34403:30;34469:34;34464:2;34449:18;;34442:62;-1:-1:-1;;;34535:2:120;34520:18;;34513:38;34583:3;34568:19;;34189:404::o;35023:329::-;35120:4;35178:11;35165:25;35272:3;35268:8;35257;35241:14;35237:29;35233:44;35213:18;35209:69;35199:97;;35292:1;35289;35282:12;35923:241;35979:6;36032:2;36020:9;36011:7;36007:23;36003:32;36000:52;;;36048:1;36045;36038:12;36000:52;36087:9;36074:23;36106:28;36128:5;36106:28;:::i;36169:754::-;36222:3;36267:1;36263;36258:3;36254:11;36250:19;36308:2;36300:5;36294:12;36290:21;36285:3;36278:34;36373:2;36365:4;36358:5;36354:16;36348:23;36344:32;36337:4;36332:3;36328:14;36321:56;36438:2;36430:4;36423:5;36419:16;36413:23;36409:32;36402:4;36397:3;36393:14;36386:56;;36491:4;36484:5;36480:16;36474:23;36467:4;36462:3;36458:14;36451:47;36559:10;36551:4;36544:5;36540:16;36534:23;36530:40;36523:4;36518:3;36514:14;36507:64;36617:4;36610:5;36606:16;36600:23;36655:4;36648;36643:3;36639:14;36632:28;36681:69;36744:4;36739:3;36735:14;36721:12;36681:69;:::i;:::-;36669:81;;36798:4;36791:5;36787:16;36781:23;36846:3;36840:4;36836:14;36829:4;36824:3;36820:14;36813:38;36867:50;36912:4;36896:14;36867:50;:::i;36928:269::-;37115:2;37104:9;37097:21;37078:4;37135:56;37187:2;37176:9;37172:18;37164:6;37135:56;:::i;37202:1255::-;37435:2;37424:9;37417:21;37398:4;37473:6;37467:13;37516:4;37511:2;37500:9;37496:18;37489:32;37544:74;37613:3;37602:9;37598:19;37584:12;37544:74;:::i;:::-;37530:88;;37667:2;37659:6;37655:15;37649:22;37739:2;37735:7;37723:9;37715:6;37711:22;37707:36;37702:2;37691:9;37687:18;37680:64;37767:52;37812:6;37796:14;37767:52;:::i;:::-;37753:66;;;37868:2;37860:6;37856:15;37850:22;37908:1;37904;37899:3;37895:11;37891:19;37966:2;37950:14;37946:23;37941:2;37930:9;37926:18;37919:51;38019:2;38011:6;38007:15;38001:22;37979:44;;38087:2;38070:14;38064:21;38060:30;38054:3;38043:9;38039:19;38032:59;;38164:26;38158:2;38142:14;38138:23;38132:30;38128:63;38122:3;38111:9;38107:19;38100:92;;38241:3;38233:6;38229:16;38223:23;38255:54;38304:3;38293:9;38289:19;38273:14;23335:10;23324:22;23312:35;;23259:94;38255:54;-1:-1:-1;38358:3:120;38346:16;;38340:23;-1:-1:-1;;;;;8033:31:120;;38422:4;38407:20;;8021:44;-1:-1:-1;38445:6:120;37202:1255;-1:-1:-1;;;37202:1255:120:o;38462:306::-;38538:6;38546;38599:2;38587:9;38578:7;38574:23;38570:32;38567:52;;;38615:1;38612;38605:12;38567:52;38647:9;38641:16;38666:28;38688:5;38666:28;:::i;:::-;38758:2;38743:18;;;;38737:25;38713:5;;38737:25;;-1:-1:-1;;;38462:306:120:o;39251:340::-;39466:6;39455:9;39448:25;39509:2;39504;39493:9;39489:18;39482:30;39429:4;39529:56;39581:2;39570:9;39566:18;39558:6;39529:56;:::i;44200:183::-;44269:6;44322:2;44310:9;44301:7;44297:23;44293:32;44290:52;;;44338:1;44335;44328:12;44290:52;-1:-1:-1;44361:16:120;;44200:183;-1:-1:-1;44200:183:120:o;44388:670::-;44453:5;44506:3;44499:4;44491:6;44487:17;44483:27;44473:55;;44524:1;44521;44514:12;44473:55;44553:6;44547:13;44579:4;44603:71;44619:54;44670:2;44619:54;:::i;44603:71::-;44708:15;;;44794:1;44790:10;;;;44778:23;;44774:32;;;44739:12;;;;44818:15;;;44815:35;;;44846:1;44843;44836:12;44815:35;44882:2;44874:6;44870:15;44894:135;44910:6;44905:3;44902:15;44894:135;;;44976:10;;44964:23;;45007:12;;;;44927;;44894:135;;45063:1239;45211:6;45219;45272:2;45260:9;45251:7;45247:23;45243:32;45240:52;;;45288:1;45285;45278:12;45240:52;45321:9;45315:16;-1:-1:-1;;;;;45391:2:120;45383:6;45380:14;45377:34;;;45407:1;45404;45397:12;45377:34;45445:6;45434:9;45430:22;45420:32;;45490:7;45483:4;45479:2;45475:13;45471:27;45461:55;;45512:1;45509;45502:12;45461:55;45541:2;45535:9;45563:4;45587:71;45603:54;45654:2;45603:54;:::i;45587:71::-;45692:15;;;45774:1;45770:10;;;;45762:19;;45758:28;;;45723:12;;;;45798:19;;;45795:39;;;45830:1;45827;45820:12;45795:39;45854:11;;;;45874:210;45890:6;45885:3;45882:15;45874:210;;;45963:3;45957:10;45980:31;46005:5;45980:31;:::i;:::-;46024:18;;45907:12;;;;46062;;;;45874:210;;;46139:18;;;46133:25;46103:5;;-1:-1:-1;46133:25:120;;-1:-1:-1;;;46170:16:120;;;46167:36;;;46199:1;46196;46189:12;46167:36;;46222:74;46288:7;46277:8;46266:9;46262:24;46222:74;:::i;:::-;46212:84;;;45063:1239;;;;;:::o;46307:128::-;46347:3;46378:1;46374:6;46371:1;46368:13;46365:39;;;46384:18;;:::i;:::-;-1:-1:-1;46420:9:120;;46307:128::o;46440:125::-;46480:4;46508:1;46505;46502:8;46499:34;;;46513:18;;:::i;:::-;-1:-1:-1;46550:9:120;;46440:125::o;51512:394::-;-1:-1:-1;;;;;51789:15:120;;;51771:34;;51841:15;;;;51836:2;51821:18;;51814:43;51888:2;51873:18;;51866:34;;;;51721:2;51706:18;;51512:394::o;52404:245::-;52462:6;52515:2;52503:9;52494:7;52490:23;52486:32;52483:52;;;52531:1;52528;52521:12;52483:52;52570:9;52557:23;52589:30;52613:5;52589:30;:::i;53704:195::-;53808:11;;-1:-1:-1;;;;;;53804:54:120;-1:-1:-1;;;;;53860:31:120;;;;53801:91;;;;53788:105;;53704:195::o;53904:760::-;54087:5;54074:19;54102:33;54127:7;54102:33;:::i;:::-;54144:62;54198:7;54192:4;54144:62;:::i;:::-;;54243:1;54237:4;54233:12;54293:2;54286:5;54282:14;54269:28;54306:33;54331:7;54306:33;:::i;:::-;54348:68;54408:7;54396:10;54348:68;:::i;:::-;;54464:2;54457:5;54453:14;54440:28;54477:32;54501:7;54477:32;:::i;:::-;54528:17;;-1:-1:-1;;;;54576:34:120;54639:3;54616:17;;;;-1:-1:-1;;;54612:44:120;54573:84;54554:104;;-1:-1:-1;;53904:760:120:o;57310:204::-;57420:9;57457:51;57493:14;57486:5;57457:51;:::i;:::-;57444:64;57310:204;-1:-1:-1;;57310:204:120:o;60449:666::-;60624:6;60613:9;60606:25;60587:4;60650:2;60688;60683;60672:9;60668:18;60661:30;60720:6;60714:13;60763:6;60758:2;60747:9;60743:18;60736:34;60788:1;60798:140;60812:6;60809:1;60806:13;60798:140;;;60907:14;;;60903:23;;60897:30;60873:17;;;60892:2;60869:26;60862:66;60827:10;;60798:140;;;60956:6;60953:1;60950:13;60947:91;;;61026:1;61021:2;61012:6;61001:9;60997:22;60993:31;60986:42;60947:91;-1:-1:-1;61099:2:120;61078:15;-1:-1:-1;;61074:29:120;61059:45;;;;61106:2;61055:54;;60449:666;-1:-1:-1;;;;60449:666:120:o;61120:290::-;61189:6;61242:2;61230:9;61221:7;61217:23;61213:32;61210:52;;;61258:1;61255;61248:12;61210:52;61284:16;;-1:-1:-1;;;;;;61329:32:120;;61319:43;;61309:71;;61376:1;61373;61366:12","linkReferences":{},"immutableReferences":{"47366":[{"start":10935,"length":32}],"49560":[{"start":1365,"length":32},{"start":4235,"length":32},{"start":4783,"length":32},{"start":5498,"length":32},{"start":8363,"length":32},{"start":11970,"length":32},{"start":15759,"length":32},{"start":17614,"length":32}],"49564":[{"start":2122,"length":32}],"49568":[{"start":1533,"length":32},{"start":4285,"length":32},{"start":4833,"length":32},{"start":8215,"length":32},{"start":11792,"length":32},{"start":15457,"length":32},{"start":17448,"length":32}]}},"methodIdentifiers":{"DELEGATION_APPROVAL_TYPEHASH()":"04a4f979","DOMAIN_TYPEHASH()":"20606b70","MAX_STAKER_OPT_OUT_WINDOW_BLOCKS()":"4fc40b61","MAX_WITHDRAWAL_DELAY_BLOCKS()":"ca661c04","OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","STAKER_DELEGATION_TYPEHASH()":"43377382","avsOperatorStatus(address,address)":"49075da3","beaconChainETHStrategy()":"9104c319","calculateCurrentStakerDelegationDigestHash(address,address,uint256)":"1bbce091","calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":"0b9f487a","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","calculateStakerDelegationDigestHash(address,uint256,address,uint256)":"c94b5111","calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":"597b36da","completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":"60d7faed","completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":"33404396","cumulativeWithdrawalsQueued(address)":"a1788484","decreaseDelegatedShares(address,address,uint256)":"132d4967","delegateTo(address,(bytes,uint256),bytes32)":"eea9064b","delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":"7f548071","delegatedTo(address)":"65da1264","delegationApprover(address)":"3cdeb5e0","delegationApproverSaltIsSpent(address,bytes32)":"bb45fef2","deregisterOperatorFromAVS(address)":"a364f4da","domainSeparator()":"f698da25","earningsReceiver(address)":"5f966f14","eigenPodManager()":"4665bcda","getDelegatableShares(address)":"cf80873e","increaseDelegatedShares(address,address,uint256)":"28a573ae","initialize(address,address,uint256,uint256)":"eb990c59","isDelegated(address)":"3e28391d","isOperator(address)":"6d70f7ae","migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":"5cfe8d2c","modifyOperatorDetails((address,address,uint32))":"f16172b0","operatorDetails(address)":"c5e480db","operatorSaltIsSpent(address,bytes32)":"374823b5","operatorShares(address,address)":"778e55f3","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","pendingWithdrawals(bytes32)":"b7f06ebe","queueWithdrawals((address[],uint256[],address)[])":"0dd8dd02","registerAsOperator((address,address,uint32),string)":"0f589e59","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","renounceOwnership()":"715018a6","setPauserRegistry(address)":"10d67a2f","slasher()":"b1344271","stakerNonce(address)":"29c77d4f","stakerOptOutWindowBlocks(address)":"16928365","strategyManager()":"39b70e38","test()":"f8a8fd6d","transferOwnership(address)":"f2fde38b","undelegate(address)":"da8be864","unpause(uint256)":"fabc1cbc","updateAVSMetadataURI(string)":"a98fb355","updateOperatorMetadataURI(string)":"99be81c8","withdrawalDelayBlocks()":"50f73e7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategyManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_slasher\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_eigenPodManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorDetailsModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"OperatorMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"operatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerForceUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"WithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"WithdrawalQueued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"avsOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IDelegationManager.OperatorAVSRegistrationStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainETHStrategy\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateDelegationApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakerNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAsTokens\",\"type\":\"bool\"}],\"name\":\"completeQueuedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal[]\",\"name\":\"withdrawals\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[][]\",\"name\":\"tokens\",\"type\":\"address[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"receiveAsTokens\",\"type\":\"bool[]\"}],\"name\":\"completeQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cumulativeWithdrawalsQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"decreaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateToBySignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegatedTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"delegationApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"delegationApproverSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"earningsReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDelegatableShares\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"increaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialPausedStatus\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\"}],\"name\":\"migrateQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"modifyOperatorDetails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"pendingWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct IDelegationManager.QueuedWithdrawalParams[]\",\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\"}],\"name\":\"queueWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"registerAsOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakerNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stakerOptOutWindowBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateOperatorMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"params\":{\"_delegationApprover\":\"the operator's `delegationApprover` who will be signing the delegationHash (in general)\",\"approverSalt\":\"A unique and single use value associated with the approver signature.\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account receiving delegated stake\",\"staker\":\"The account delegating their stake\"}},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"params\":{\"_stakerNonce\":\"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`\",\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"details\":\"middlewareTimesIndex is unused, but will be used in the Slasher eventuallybeaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.\",\"params\":{\"middlewareTimesIndex\":\"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array\",\"receiveAsTokens\":\"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.\",\"tokens\":\"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)\",\"withdrawal\":\"The Withdrawal to complete.\"}},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"details\":\"See `completeQueuedWithdrawal` for relevant dev tags\",\"params\":{\"middlewareTimesIndexes\":\"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.\",\"receiveAsTokens\":\"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.\",\"tokens\":\"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.\",\"withdrawals\":\"The Withdrawals to complete.\"}},\"decreaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to decrease.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to decrease the delegated shares.\"}},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"details\":\"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"A unique single use value tied to an individual signature.\",\"approverSignatureAndExpiry\":\"Verifies the operator approves of this delegation\",\"operator\":\"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.\"}},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"details\":\"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.\",\"approverSignatureAndExpiry\":\"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:\",\"operator\":\"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.\",\"staker\":\"The account delegating stake to an `operator` account\",\"stakerSignatureAndExpiry\":\"Signed data from the staker authorizing delegating stake to an operator\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712.\"},\"getDelegatableShares(address)\":{\"details\":\"Returns two empty arrays in the case that the Staker has no actively-delegateable shares.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to increase.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to increase the delegated shares.\"}},\"initialize(address,address,uint256,uint256)\":{\"details\":\"Initializes the addresses of the initial owner, pauser registry, and paused status. withdrawalDelayBlocks is set only once here\"},\"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])\":{\"details\":\"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"details\":\"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).\",\"params\":{\"newOperatorDetails\":\"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"registerAsOperator((address,address,uint32),string)\":{\"details\":\"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \\\"delegated to themself\\\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"is a URI for the operator's metadata, i.e. a link providing more details on the operator.\",\"registeringOperatorDetails\":\"is the `OperatorDetails` for the operator.\"}},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateAVSMetadataURI(string)\":{\"params\":{\"metadataURI\":\"The URI for metadata associated with an avs\"}},\"updateOperatorMetadataURI(string)\":{\"params\":{\"metadataURI\":\"The URI for metadata associated with an operator\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"},\"OperatorDetailsModified(address,(address,address,uint32))\":{\"notice\":\"Emitted when an operator updates their OperatorDetails to @param newOperatorDetails\"},\"OperatorMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param operator indicates that they are updating their MetadataURI string\"},\"OperatorSharesDecreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are decreased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"OperatorSharesIncreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are increased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"StakerDelegated(address,address)\":{\"notice\":\"Emitted when @param staker delegates to @param operator.\"},\"StakerForceUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker is undelegated via a call not originating from the staker themself\"},\"StakerUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker undelegates from @param operator.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"},\"WithdrawalCompleted(bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is completed\"},\"WithdrawalDelayBlocksSet(uint256,uint256)\":{\"notice\":\"Emitted when the `withdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"WithdrawalMigrated(bytes32,bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is *migrated* from the StrategyManager to the DelegationManager\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Emitted when a new withdrawal is queued.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `DelegationApproval` struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `Registration` struct used by the contract\"},\"STAKER_DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the `StakerDelegation` struct used by the contract\"},\"avsOperatorStatus(address,address)\":{\"notice\":\"Mapping: AVS => operator => enum of operator status to the AVS\"},\"beaconChainETHStrategy()\":{\"notice\":\"Canonical, virtual beacon chain ETH strategy\"},\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"notice\":\"Calculates the digestHash for a `staker` to sign to delegate to an `operator`\"},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions.\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"notice\":\"Calculates the digest hash to be signed and used in the `delegateToBySignature` function\"},\"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Returns the keccak256 hash of `withdrawal`.\"},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"notice\":\"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`\"},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"notice\":\"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`\"},\"cumulativeWithdrawalsQueued(address)\":{\"notice\":\"Mapping: staker => cumulative number of queued withdrawals they have ever initiated.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Decreases a staker's delegated share balance in a strategy.\"},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates their stake to an operator.\"},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates a staker's stake to an operator with valid signatures from both parties.\"},\"delegatedTo(address)\":{\"notice\":\"Mapping: staker => operator whom the staker is currently delegated to.\"},\"delegationApprover(address)\":{\"notice\":\"Returns the delegationApprover account for an operator\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover.\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"eigenPodManager()\":{\"notice\":\"The EigenPodManager contract for EigenLayer\"},\"getDelegatableShares(address)\":{\"notice\":\"Returns the number of actively-delegatable shares a staker has across all strategies.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Increases a staker's delegated share balance in a strategy.\"},\"isDelegated(address)\":{\"notice\":\"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise.\"},\"isOperator(address)\":{\"notice\":\"Returns true is an operator has previously registered for delegation.\"},\"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])\":{\"notice\":\"Migrates an array of queued withdrawals from the StrategyManager contract to this contract.\"},\"modifyOperatorDetails((address,address,uint32))\":{\"notice\":\"Updates an operator's stored `OperatorDetails`.\"},\"operatorDetails(address)\":{\"notice\":\"Returns the OperatorDetails struct associated with an `operator`.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator.\"},\"operatorShares(address,address)\":{\"notice\":\"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"pendingWithdrawals(bytes32)\":{\"notice\":\"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending\"},\"queueWithdrawals((address[],uint256[],address)[])\":{\"notice\":\"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay.\"},\"registerAsOperator((address,address,uint32),string)\":{\"notice\":\"Registers the caller as an operator in EigenLayer.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"slasher()\":{\"notice\":\"The Slasher contract for EigenLayer\"},\"stakerNonce(address)\":{\"notice\":\"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked.\"},\"stakerOptOutWindowBlocks(address)\":{\"notice\":\"Returns the stakerOptOutWindowBlocks for an operator\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract for EigenLayer\"},\"undelegate(address)\":{\"notice\":\"Allows the staker, the staker's operator, or that operator's delegationApprover to undelegate a staker from their operator. Undelegation immediately removes ALL active shares/strategies from both the staker and operator, and places the shares and strategies in the withdrawal queue\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an avs to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"},\"updateOperatorMetadataURI(string)\":{\"notice\":\"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.\"},\"withdrawalDelayBlocks()\":{\"notice\":\"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockDelegationManager.sol\":\"MockDelegationManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_strategyManager","type":"address"},{"internalType":"address","name":"_slasher","type":"address"},{"internalType":"address","name":"_eigenPodManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorDetailsModified","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"OperatorMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"operatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesDecreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerDelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerForceUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"WithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"oldWithdrawalRoot","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newWithdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalMigrated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false},{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"indexed":false}],"type":"event","name":"WithdrawalQueued","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_STAKER_OPT_OUT_WINDOW_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_WITHDRAWAL_DELAY_BLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKER_DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"avsOperatorStatus","outputs":[{"internalType":"enum IDelegationManager.OperatorAVSRegistrationStatus","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainETHStrategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateCurrentStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateDelegationApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"_stakerNonce","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"},{"internalType":"bool","name":"receiveAsTokens","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawal"},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal[]","name":"withdrawals","type":"tuple[]","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"middlewareTimesIndexes","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawals"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeWithdrawalsQueued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateTo"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"stakerSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateToBySignature"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegatedTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"delegationApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"delegationApproverSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"earningsReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegatableShares","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"initialPausedStatus","type":"uint256"},{"internalType":"uint256","name":"_withdrawalDelayBlocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","name":"withdrawalsToMigrate","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawals"},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"modifyOperatorDetails"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorDetails","outputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IStrategy","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"pendingWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"queueWithdrawals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"registeringOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]},{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerAsOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"stakerNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stakerOptOutWindowBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"undelegate","outputs":[{"internalType":"bytes32[]","name":"withdrawalRoots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorMetadataURI"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"params":{"expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"params":{"_delegationApprover":"the operator's `delegationApprover` who will be signing the delegationHash (in general)","approverSalt":"A unique and single use value associated with the approver signature.","expiry":"Time after which the approver's signature becomes invalid","operator":"The account receiving delegated stake","staker":"The account delegating their stake"}},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"params":{"_stakerNonce":"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`","expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"details":"middlewareTimesIndex is unused, but will be used in the Slasher eventuallybeaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.","params":{"middlewareTimesIndex":"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array","receiveAsTokens":"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.","tokens":"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)","withdrawal":"The Withdrawal to complete."}},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"details":"See `completeQueuedWithdrawal` for relevant dev tags","params":{"middlewareTimesIndexes":"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.","receiveAsTokens":"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.","tokens":"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.","withdrawals":"The Withdrawals to complete."}},"decreaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to decrease.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to decrease the delegated shares."}},"delegateTo(address,(bytes,uint256),bytes32)":{"details":"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"A unique single use value tied to an individual signature.","approverSignatureAndExpiry":"Verifies the operator approves of this delegation","operator":"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer."}},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"details":"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.","approverSignatureAndExpiry":"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:","operator":"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.","staker":"The account delegating stake to an `operator` account","stakerSignatureAndExpiry":"Signed data from the staker authorizing delegating stake to an operator"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712."},"getDelegatableShares(address)":{"details":"Returns two empty arrays in the case that the Staker has no actively-delegateable shares."},"increaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to increase.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to increase the delegated shares."}},"initialize(address,address,uint256,uint256)":{"details":"Initializes the addresses of the initial owner, pauser registry, and paused status. withdrawalDelayBlocks is set only once here"},"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":{"details":"This function is expected to be removed in the next upgrade, after all queued withdrawals have been migrated."},"modifyOperatorDetails((address,address,uint32))":{"details":"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).","params":{"newOperatorDetails":"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`."}},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"registerAsOperator((address,address,uint32),string)":{"details":"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \"delegated to themself\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"is a URI for the operator's metadata, i.e. a link providing more details on the operator.","registeringOperatorDetails":"is the `OperatorDetails` for the operator."}},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateAVSMetadataURI(string)":{"params":{"metadataURI":"The URI for metadata associated with an avs"}},"updateOperatorMetadataURI(string)":{"params":{"metadataURI":"The URI for metadata associated with an operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATION_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the `DelegationApproval` struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `Registration` struct used by the contract"},"STAKER_DELEGATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the `StakerDelegation` struct used by the contract"},"avsOperatorStatus(address,address)":{"notice":"Mapping: AVS => operator => enum of operator status to the AVS"},"beaconChainETHStrategy()":{"notice":"Canonical, virtual beacon chain ETH strategy"},"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"notice":"Calculates the digestHash for a `staker` to sign to delegate to an `operator`"},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions."},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"notice":"Calculates the digest hash to be signed and used in the `delegateToBySignature` function"},"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":{"notice":"Returns the keccak256 hash of `withdrawal`."},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"notice":"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`"},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"notice":"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`"},"cumulativeWithdrawalsQueued(address)":{"notice":"Mapping: staker => cumulative number of queued withdrawals they have ever initiated."},"decreaseDelegatedShares(address,address,uint256)":{"notice":"Decreases a staker's delegated share balance in a strategy."},"delegateTo(address,(bytes,uint256),bytes32)":{"notice":"Caller delegates their stake to an operator."},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"notice":"Caller delegates a staker's stake to an operator with valid signatures from both parties."},"delegatedTo(address)":{"notice":"Mapping: staker => operator whom the staker is currently delegated to."},"delegationApprover(address)":{"notice":"Returns the delegationApprover account for an operator"},"delegationApproverSaltIsSpent(address,bytes32)":{"notice":"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover."},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"eigenPodManager()":{"notice":"The EigenPodManager contract for EigenLayer"},"getDelegatableShares(address)":{"notice":"Returns the number of actively-delegatable shares a staker has across all strategies."},"increaseDelegatedShares(address,address,uint256)":{"notice":"Increases a staker's delegated share balance in a strategy."},"isDelegated(address)":{"notice":"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise."},"isOperator(address)":{"notice":"Returns true is an operator has previously registered for delegation."},"migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":{"notice":"Migrates an array of queued withdrawals from the StrategyManager contract to this contract."},"modifyOperatorDetails((address,address,uint32))":{"notice":"Updates an operator's stored `OperatorDetails`."},"operatorDetails(address)":{"notice":"Returns the OperatorDetails struct associated with an `operator`."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Mapping: operator => 32-byte salt => whether or not the salt has already been used by the operator."},"operatorShares(address,address)":{"notice":"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"pendingWithdrawals(bytes32)":{"notice":"Mapping: hash of withdrawal inputs, aka 'withdrawalRoot' => whether the withdrawal is pending"},"queueWithdrawals((address[],uint256[],address)[])":{"notice":"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay."},"registerAsOperator((address,address,uint32),string)":{"notice":"Registers the caller as an operator in EigenLayer."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"slasher()":{"notice":"The Slasher contract for EigenLayer"},"stakerNonce(address)":{"notice":"Mapping: staker => number of signed messages (used in `delegateToBySignature`) from the staker that this contract has already checked."},"stakerOptOutWindowBlocks(address)":{"notice":"Returns the stakerOptOutWindowBlocks for an operator"},"strategyManager()":{"notice":"The StrategyManager contract for EigenLayer"},"undelegate(address)":{"notice":"Allows the staker, the staker's operator, or that operator's delegationApprover to undelegate a staker from their operator. Undelegation immediately removes ALL active shares/strategies from both the staker and operator, and places the shares and strategies in the withdrawal queue"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateAVSMetadataURI(string)":{"notice":"Called by an avs to emit an `AVSMetadataURIUpdated` event indicating the information has updated."},"updateOperatorMetadataURI(string)":{"notice":"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated."},"withdrawalDelayBlocks()":{"notice":"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced)."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockDelegationManager.sol":"MockDelegationManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"}},"version":1},"id":89} \ No newline at end of file diff --git a/out/MockEigenPodManager.sol/MockEigenPodManager.json b/out/MockEigenPodManager.sol/MockEigenPodManager.json new file mode 100644 index 00000000..db01ec97 --- /dev/null +++ b/out/MockEigenPodManager.sol/MockEigenPodManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"podOwnerShares","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"test","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033","sourceMap":"125:171:90:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033","sourceMap":"125:171:90:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;160:103;;;;;;:::i;:::-;-1:-1:-1;230:6:90;;160:103;;;;449:25:120;;;437:2;422:18;160:103:90;;;;;;;269:25;;14:286:120;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:120;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:120:o","linkReferences":{}},"methodIdentifiers":{"podOwnerShares(address)":"60f4062b","test()":"f8a8fd6d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"podOwnerShares\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockEigenPodManager.sol\":\"MockEigenPodManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"podOwnerShares","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockEigenPodManager.sol":"MockEigenPodManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"}},"version":1},"id":90} \ No newline at end of file diff --git a/out/MockPriceAggregator.sol/MockPriceAggregator.json b/out/MockPriceAggregator.sol/MockPriceAggregator.json new file mode 100644 index 00000000..b0246138 --- /dev/null +++ b/out/MockPriceAggregator.sol/MockPriceAggregator.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"assetToAsset","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"twapPeriod","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getPrice","inputs":[{"name":"tokenID","type":"string","internalType":"string"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isTokenSupported","inputs":[{"name":"tokenID","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"prices","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setPrice","inputs":[{"name":"tokenID","type":"string","internalType":"string"},{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506104b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630d3652ec1461005c57806322e01192146100845780632ef3accc146100995780637c661949146100ba578063c3825f4b146100d2575b600080fd5b61006f61006a3660046102b9565b6100fd565b60405190151581526020015b60405180910390f35b6100976100923660046102fb565b610129565b005b6100ac6100a73660046102fb565b610151565b60405190815260200161007b565b6100ac6100c8366004610363565b6000949350505050565b6100ac6100e03660046103bd565b805160208183018101805160008252928201919093012091525481565b600080838360405161011092919061046e565b9081526040519081900360200190205415159392505050565b806000848460405161013c92919061046e565b90815260405190819003602001902055505050565b600080848460405161016492919061046e565b908152602001604051809103902054600014156101d95760405162461bcd60e51b815260206004820152602860248201527f4d6f636b507269636541676772656761746f723a20746f6b656e206e6f7420736044820152671d5c1c1bdc9d195960c21b60648201526084015b60405180910390fd5b600082116102465760405162461bcd60e51b815260206004820152603460248201527f4d6f636b507269636541676772656761746f723a20616d6f756e74496e206d75604482015273073742062652067726561746572207468616e20360641b60648201526084016101d0565b6000848460405161025892919061046e565b90815260200160405180910390205490509392505050565b60008083601f84011261028257600080fd5b50813567ffffffffffffffff81111561029a57600080fd5b6020830191508360208285010111156102b257600080fd5b9250929050565b600080602083850312156102cc57600080fd5b823567ffffffffffffffff8111156102e357600080fd5b6102ef85828601610270565b90969095509350505050565b60008060006040848603121561031057600080fd5b833567ffffffffffffffff81111561032757600080fd5b61033386828701610270565b909790965060209590950135949350505050565b80356001600160a01b038116811461035e57600080fd5b919050565b6000806000806080858703121561037957600080fd5b61038285610347565b93506020850135925061039760408601610347565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103cf57600080fd5b813567ffffffffffffffff808211156103e757600080fd5b818401915084601f8301126103fb57600080fd5b81358181111561040d5761040d6103a7565b604051601f8201601f19908116603f01168101908382118183101715610435576104356103a7565b8160405282815287602084870101111561044e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b818382376000910190815291905056fea26469706673582212202b50c263451038e2acbc9ac93da2cdbe051d3f34af869cb84c5e8be3a881111064736f6c634300080c0033","sourceMap":"140:947:118:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80630d3652ec1461005c57806322e01192146100845780632ef3accc146100995780637c661949146100ba578063c3825f4b146100d2575b600080fd5b61006f61006a3660046102b9565b6100fd565b60405190151581526020015b60405180910390f35b6100976100923660046102fb565b610129565b005b6100ac6100a73660046102fb565b610151565b60405190815260200161007b565b6100ac6100c8366004610363565b6000949350505050565b6100ac6100e03660046103bd565b805160208183018101805160008252928201919093012091525481565b600080838360405161011092919061046e565b9081526040519081900360200190205415159392505050565b806000848460405161013c92919061046e565b90815260405190819003602001902055505050565b600080848460405161016492919061046e565b908152602001604051809103902054600014156101d95760405162461bcd60e51b815260206004820152602860248201527f4d6f636b507269636541676772656761746f723a20746f6b656e206e6f7420736044820152671d5c1c1bdc9d195960c21b60648201526084015b60405180910390fd5b600082116102465760405162461bcd60e51b815260206004820152603460248201527f4d6f636b507269636541676772656761746f723a20616d6f756e74496e206d75604482015273073742062652067726561746572207468616e20360641b60648201526084016101d0565b6000848460405161025892919061046e565b90815260200160405180910390205490509392505050565b60008083601f84011261028257600080fd5b50813567ffffffffffffffff81111561029a57600080fd5b6020830191508360208285010111156102b257600080fd5b9250929050565b600080602083850312156102cc57600080fd5b823567ffffffffffffffff8111156102e357600080fd5b6102ef85828601610270565b90969095509350505050565b60008060006040848603121561031057600080fd5b833567ffffffffffffffff81111561032757600080fd5b61033386828701610270565b909790965060209590950135949350505050565b80356001600160a01b038116811461035e57600080fd5b919050565b6000806000806080858703121561037957600080fd5b61038285610347565b93506020850135925061039760408601610347565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103cf57600080fd5b813567ffffffffffffffff808211156103e757600080fd5b818401915084601f8301126103fb57600080fd5b81358181111561040d5761040d6103a7565b604051601f8201601f19908116603f01168101908382118183101715610435576104356103a7565b8160405282815287602084870101111561044e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b818382376000910190815291905056fea26469706673582212202b50c263451038e2acbc9ac93da2cdbe051d3f34af869cb84c5e8be3a881111064736f6c634300080c0033","sourceMap":"140:947:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;938:147;;;;;;:::i;:::-;;:::i;:::-;;;948:14:120;;941:22;923:41;;911:2;896:18;938:147:118;;;;;;;;242:107;;;;;;:::i;:::-;;:::i;:::-;;355:311;;;;;;:::i;:::-;;:::i;:::-;;;1605:25:120;;;1593:2;1578:18;355:311:118;1459:177:120;672:260:118;;;;;;:::i;:::-;837:17;672:260;;;;;;;195:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;938:147;1035:4;1058:6;1065:7;;1058:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:20;;;938:147;-1:-1:-1;;;938:147:118:o;242:107::-;337:5;319:6;326:7;;319:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:23;-1:-1:-1;;;242:107:118:o;355:311::-;448:7;475:6;482:7;;475:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;494:1;475:20;;467:73;;;;-1:-1:-1;;;467:73:118;;3760:2:120;467:73:118;;;3742:21:120;3799:2;3779:18;;;3772:30;3838:34;3818:18;;;3811:62;-1:-1:-1;;;3889:18:120;;;3882:38;3937:19;;467:73:118;;;;;;;;;569:1;558:8;:12;550:77;;;;-1:-1:-1;;;550:77:118;;4169:2:120;550:77:118;;;4151:21:120;4208:2;4188:18;;;4181:30;4247:34;4227:18;;;4220:62;-1:-1:-1;;;4298:18:120;;;4291:50;4358:19;;550:77:118;3967:416:120;550:77:118;644:6;651:7;;644:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;637:22;;355:311;;;;;:::o;14:348:120:-;66:8;76:6;130:3;123:4;115:6;111:17;107:27;97:55;;148:1;145;138:12;97:55;-1:-1:-1;171:20:120;;214:18;203:30;;200:50;;;246:1;243;236:12;200:50;283:4;275:6;271:17;259:29;;335:3;328:4;319:6;311;307:19;303:30;300:39;297:59;;;352:1;349;342:12;297:59;14:348;;;;;:::o;367:411::-;438:6;446;499:2;487:9;478:7;474:23;470:32;467:52;;;515:1;512;505:12;467:52;555:9;542:23;588:18;580:6;577:30;574:50;;;620:1;617;610:12;574:50;659:59;710:7;701:6;690:9;686:22;659:59;:::i;:::-;737:8;;633:85;;-1:-1:-1;367:411:120;-1:-1:-1;;;;367:411:120:o;975:479::-;1055:6;1063;1071;1124:2;1112:9;1103:7;1099:23;1095:32;1092:52;;;1140:1;1137;1130:12;1092:52;1180:9;1167:23;1213:18;1205:6;1202:30;1199:50;;;1245:1;1242;1235:12;1199:50;1284:59;1335:7;1326:6;1315:9;1311:22;1284:59;:::i;:::-;1362:8;;1258:85;;-1:-1:-1;1444:2:120;1429:18;;;;1416:32;;975:479;-1:-1:-1;;;;975:479:120:o;1641:173::-;1709:20;;-1:-1:-1;;;;;1758:31:120;;1748:42;;1738:70;;1804:1;1801;1794:12;1738:70;1641:173;;;:::o;1819:397::-;1905:6;1913;1921;1929;1982:3;1970:9;1961:7;1957:23;1953:33;1950:53;;;1999:1;1996;1989:12;1950:53;2022:29;2041:9;2022:29;:::i;:::-;2012:39;;2098:2;2087:9;2083:18;2070:32;2060:42;;2121:38;2155:2;2144:9;2140:18;2121:38;:::i;:::-;1819:397;;;;-1:-1:-1;2111:48:120;;2206:2;2191:18;2178:32;;-1:-1:-1;;1819:397:120:o;2221:127::-;2282:10;2277:3;2273:20;2270:1;2263:31;2313:4;2310:1;2303:15;2337:4;2334:1;2327:15;2353:922;2422:6;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;2531:9;2518:23;2560:18;2601:2;2593:6;2590:14;2587:34;;;2617:1;2614;2607:12;2587:34;2655:6;2644:9;2640:22;2630:32;;2700:7;2693:4;2689:2;2685:13;2681:27;2671:55;;2722:1;2719;2712:12;2671:55;2758:2;2745:16;2780:2;2776;2773:10;2770:36;;;2786:18;;:::i;:::-;2861:2;2855:9;2829:2;2915:13;;-1:-1:-1;;2911:22:120;;;2935:2;2907:31;2903:40;2891:53;;;2959:18;;;2979:22;;;2956:46;2953:72;;;3005:18;;:::i;:::-;3045:10;3041:2;3034:22;3080:2;3072:6;3065:18;3120:7;3115:2;3110;3106;3102:11;3098:20;3095:33;3092:53;;;3141:1;3138;3131:12;3092:53;3197:2;3192;3188;3184:11;3179:2;3171:6;3167:15;3154:46;3242:1;3220:15;;;3237:2;3216:24;3209:35;;;;-1:-1:-1;3224:6:120;2353:922;-1:-1:-1;;;;;2353:922:120:o;3280:273::-;3465:6;3457;3452:3;3439:33;3421:3;3491:16;;3516:13;;;3491:16;3280:273;-1:-1:-1;3280:273:120:o","linkReferences":{}},"methodIdentifiers":{"assetToAsset(address,uint256,address,uint256)":"7c661949","getPrice(string,uint256)":"2ef3accc","isTokenSupported(string)":"0d3652ec","prices(string)":"c3825f4b","setPrice(string,uint256)":"22e01192"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"twapPeriod\",\"type\":\"uint256\"}],\"name\":\"assetToAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"prices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetToAsset(address,uint256,address,uint256)\":{\"params\":{\"amountIn\":\"Amount of tokenIn to be converted\",\"tokenIn\":\"Address of an ERC20 token contract to be converted\",\"tokenOut\":\"Address of an ERC20 token contract to convert into\",\"twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate, if applicable\"},\"returns\":{\"amountOut\":\"Amount of tokenOut received for amountIn of tokenIn\"}},\"getPrice(string,uint256)\":{\"params\":{\"amountIn\":\"Amount of token to be converted\",\"tokenID\":\"Identifier of the token\"},\"returns\":{\"_0\":\"price of the token in USDC\"}},\"isTokenSupported(string)\":{\"params\":{\"tokenID\":\"Identifier of the token\"},\"returns\":{\"_0\":\"true if token is supported\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assetToAsset(address,uint256,address,uint256)\":{\"notice\":\"Given a token and its amount, return the equivalent value in another token\"},\"getPrice(string,uint256)\":{\"notice\":\"Given a token, return the price of the token\"},\"isTokenSupported(string)\":{\"notice\":\"is token supported\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/MockPriceAggregator.sol\":\"MockPriceAggregator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]},\"test/mocks/MockPriceAggregator.sol\":{\"keccak256\":\"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c\",\"dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"twapPeriod","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assetToAsset","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"stateMutability":"view","type":"function","name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"}],"devdoc":{"kind":"dev","methods":{"assetToAsset(address,uint256,address,uint256)":{"params":{"amountIn":"Amount of tokenIn to be converted","tokenIn":"Address of an ERC20 token contract to be converted","tokenOut":"Address of an ERC20 token contract to convert into","twapPeriod":"Number of seconds in the past to consider for the TWAP rate, if applicable"},"returns":{"amountOut":"Amount of tokenOut received for amountIn of tokenIn"}},"getPrice(string,uint256)":{"params":{"amountIn":"Amount of token to be converted","tokenID":"Identifier of the token"},"returns":{"_0":"price of the token in USDC"}},"isTokenSupported(string)":{"params":{"tokenID":"Identifier of the token"},"returns":{"_0":"true if token is supported"}}},"version":1},"userdoc":{"kind":"user","methods":{"assetToAsset(address,uint256,address,uint256)":{"notice":"Given a token and its amount, return the equivalent value in another token"},"getPrice(string,uint256)":{"notice":"Given a token, return the price of the token"},"isTokenSupported(string)":{"notice":"is token supported"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/MockPriceAggregator.sol":"MockPriceAggregator"},"evmVersion":"london","libraries":{}},"sources":{"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"},"test/mocks/MockPriceAggregator.sol":{"keccak256":"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1","urls":["bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c","dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo"],"license":"BUSL-1.1"}},"version":1},"id":118} \ No newline at end of file diff --git a/out/MockProxy.sol/MockProxy.json b/out/MockProxy.sol/MockProxy.json new file mode 100644 index 00000000..c9538472 --- /dev/null +++ b/out/MockProxy.sol/MockProxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_implementation","type":"address","internalType":"address"},{"name":"_admin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"admin_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"changeAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"implementation_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","sourceMap":"221:199:91:-:0;;;277:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;380:15;397:6;405:9;;;;;;;;;;;;2038:6:49;2046:5;1024:39:44;1042:6;1050:5;1057;1024:17;;;:39;;:::i;:::-;-1:-1:-1;2063:20:49::1;::::0;-1:-1:-1;2076:6:49;2063:12:::1;:20::i;:::-;1923:167:::0;;;277:141:91;;221:199;;2183:295:45;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;;;;;:53;;:::i;:::-;;2360:112;2183:295;;;:::o;4624:135::-;4688:35;4701:11;:9;:11::i;:::-;4688:35;;;-1:-1:-1;;;;;724:15:120;;;706:34;;776:15;;;771:2;756:18;;749:43;641:18;4688:35:45;;;;;;;4733:19;4743:8;4733:9;:19::i;:::-;4624:135;:::o;1897:152::-;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:45;;;;;;;;1897:152;:::o;6570:198:51:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:51:o;4108:122:45:-;4152:7;4178:39;-1:-1:-1;;;;;;;;;;;4205:11:45;;4178:26;;;;;:39;;:::i;:::-;:45;-1:-1:-1;;;;;4178:45:45;;4108:122;-1:-1:-1;4108:122:45:o;4312:201::-;-1:-1:-1;;;;;4375:22:45;;4367:73;;;;-1:-1:-1;;;4367:73:45;;1005:2:120;4367:73:45;;;987:21:120;1044:2;1024:18;;;1017:30;1083:34;1063:18;;;1056:62;-1:-1:-1;;;1134:18:120;;;1127:36;1180:19;;4367:73:45;;;;;;;;;4498:8;4450:39;-1:-1:-1;;;;;;;;;;;4477:11:45;;4450:26;;;;;:39;;:::i;:::-;:56;;-1:-1:-1;;;;;;4450:56:45;-1:-1:-1;;;;;4450:56:45;;;;;;;;;;-1:-1:-1;4312:201:45:o;1532:259::-;1613:37;1632:17;1613:18;;;;;:37;;:::i;:::-;1605:95;;;;-1:-1:-1;;;1605:95:45;;1412:2:120;1605:95:45;;;1394:21:120;1451:2;1431:18;;;1424:30;1490:34;1470:18;;;1463:62;-1:-1:-1;;;1541:18:120;;;1534:43;1594:19;;1605:95:45;1210:409:120;1605:95:45;1767:17;1710:48;1030:66;1737:20;;1710:26;;;;;:48;;:::i;6954:387:51:-;7095:12;-1:-1:-1;;;;;1465:19:51;;;7119:69;;;;-1:-1:-1;;;7119:69:51;;1826:2:120;7119:69:51;;;1808:21:120;1865:2;1845:18;;;1838:30;1904:34;1884:18;;;1877:62;-1:-1:-1;;;1955:18:120;;;1948:36;2001:19;;7119:69:51;1624:402:120;7119:69:51;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:51;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:51;;-1:-1:-1;7199:67:51;-1:-1:-1;7283:51:51;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:51:o;1614:190:53:-;1784:4;1614:190::o;1175:320:51:-;-1:-1:-1;;;;;1465:19:51;;:23;;;1175:320::o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:51;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:51;;;;;;;;:::i;14:177:120:-;93:13;;-1:-1:-1;;;;;135:31:120;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;2031:258::-;2103:1;2113:113;2127:6;2124:1;2121:13;2113:113;;;2203:11;;;2197:18;2184:11;;;2177:39;2149:2;2142:10;2113:113;;;2244:6;2241:1;2238:13;2235:48;;;-1:-1:-1;;2279:1:120;2261:16;;2254:27;2031:258::o;2294:274::-;2423:3;2461:6;2455:13;2477:53;2523:6;2518:3;2511:4;2503:6;2499:17;2477:53;:::i;:::-;2546:16;;;;;2294:274;-1:-1:-1;;2294:274:120:o;2573:383::-;2722:2;2711:9;2704:21;2685:4;2754:6;2748:13;2797:6;2792:2;2781:9;2777:18;2770:34;2813:66;2872:6;2867:2;2856:9;2852:18;2847:2;2839:6;2835:15;2813:66;:::i;:::-;2940:2;2919:15;-1:-1:-1;;2915:29:120;2900:45;;;;2947:2;2896:54;;2573:383;-1:-1:-1;;2573:383:120:o;:::-;221:199:91;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033","sourceMap":"221:199:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2898:11:46;:9;:11::i;:::-;221:199:91;;2675:11:46;:9;:11::i;3960:134:49:-;;;;;;;;;;-1:-1:-1;3960:134:49;;;;;:::i;:::-;;:::i;4470:164::-;;;;;;:::i;:::-;;:::i;3363:129::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1217:32:120;;;1199:51;;1187:2;1172:18;3363:129:49;;;;;;;3697:103;;;;;;;;;;-1:-1:-1;3697:103:49;;;;;:::i;:::-;;:::i;2807:96::-;;;;;;;;;;;;;:::i;2322:110:46:-;2370:17;:15;:17::i;:::-;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;3960:134:49:-;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;4033:54:::1;4051:17;4070:9;;;;;;;;;;;::::0;4081:5:::1;4033:17;:54::i;:::-;3960:134:::0;:::o;2260:99::-;2337:11;:9;:11::i;4470:164::-;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;4579:48:::1;4597:17;4616:4;;4579:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4622:4:49::1;::::0;-1:-1:-1;4579:17:49::1;::::0;-1:-1:-1;;4579:48:49:i:1;:::-;4470:164:::0;;;:::o;2260:99::-;2337:11;:9;:11::i;3363:129::-;3415:23;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;3468:17:::1;:15;:17::i;:::-;3450:35;;3363:129:::0;:::o;2260:99::-;2337:11;:9;:11::i;:::-;3363:129;:::o;3697:103::-;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;3771:22:::1;3784:8;3771:12;:22::i;2807:96::-:0;2850:14;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;2885:11:::1;:9;:11::i;6570:198:51:-:0;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:51:o;1175:320::-;-1:-1:-1;;;;;1465:19:51;;:23;;;1175:320::o;4909:207:49:-;4994:11;:9;:11::i;:::-;-1:-1:-1;;;;;4980:25:49;:10;-1:-1:-1;;;;;4980:25:49;;;4972:104;;;;-1:-1:-1;;;4972:104:49;;1463:2:120;4972:104:49;;;1445:21:120;1502:2;1482:18;;;1475:30;1541:34;1521:18;;;1514:62;1612:34;1592:18;;;1585:62;-1:-1:-1;;;1663:19:120;;;1656:33;1706:19;;4972:104:49;;;;;;;;1148:140:44;1215:12;1246:35;:33;:35::i;948:895:46:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;4108:122:45;4152:7;3842:66;4178:39;:45;-1:-1:-1;;;;;4178:45:45;;4108:122;-1:-1:-1;4108:122:45:o;2183:295::-;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;:53::i;:::-;;2183:295;;;:::o;4624:135::-;4688:35;4701:11;:9;:11::i;:::-;4688:35;;;-1:-1:-1;;;;;1966:15:120;;;1948:34;;2018:15;;;2013:2;1998:18;;1991:43;1883:18;4688:35:45;;;;;;;4733:19;4743:8;4733:9;:19::i;6954:387:51:-;7095:12;-1:-1:-1;;;;;1465:19:51;;;7119:69;;;;-1:-1:-1;;;7119:69:51;;2247:2:120;7119:69:51;;;2229:21:120;2286:2;2266:18;;;2259:30;2325:34;2305:18;;;2298:62;-1:-1:-1;;;2376:18:120;;;2369:36;2422:19;;7119:69:51;2045:402:120;7119:69:51;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:51;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:51:o;1301:140:45:-;1354:7;1030:66;1380:48;1614:190:53;1897:152:45;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:45;;;;;;;;1897:152;:::o;4312:201::-;-1:-1:-1;;;;;4375:22:45;;4367:73;;;;-1:-1:-1;;;4367:73:45;;3196:2:120;4367:73:45;;;3178:21:120;3235:2;3215:18;;;3208:30;3274:34;3254:18;;;3247:62;-1:-1:-1;;;3325:18:120;;;3318:36;3371:19;;4367:73:45;2994:402:120;4367:73:45;4498:8;3842:66;4450:39;:56;;-1:-1:-1;;;;;;4450:56:45;-1:-1:-1;;;;;4450:56:45;;;;;;;;;;-1:-1:-1;4312:201:45:o;7561:742:51:-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:51;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:51;;;;;;;;:::i;1532:259:45:-;-1:-1:-1;;;;;1465:19:51;;;1605:95:45;;;;-1:-1:-1;;;1605:95:45;;3991:2:120;1605:95:45;;;3973:21:120;4030:2;4010:18;;;4003:30;4069:34;4049:18;;;4042:62;-1:-1:-1;;;4120:18:120;;;4113:43;4173:19;;1605:95:45;3789:409:120;1605:95:45;1767:17;1030:66;1710:48;1614:190:53;14:173:120;82:20;;-1:-1:-1;;;;;131:31:120;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:665::-;462:6;470;478;531:2;519:9;510:7;506:23;502:32;499:52;;;547:1;544;537:12;499:52;570:29;589:9;570:29;:::i;:::-;560:39;;650:2;639:9;635:18;622:32;673:18;714:2;706:6;703:14;700:34;;;730:1;727;720:12;700:34;768:6;757:9;753:22;743:32;;813:7;806:4;802:2;798:13;794:27;784:55;;835:1;832;825:12;784:55;875:2;862:16;901:2;893:6;890:14;887:34;;;917:1;914;907:12;887:34;962:7;957:2;948:6;944:2;940:15;936:24;933:37;930:57;;;983:1;980;973:12;930:57;1014:2;1010;1006:11;996:21;;1036:6;1026:16;;;;;383:665;;;;;:::o;2452:258::-;2524:1;2534:113;2548:6;2545:1;2542:13;2534:113;;;2624:11;;;2618:18;2605:11;;;2598:39;2570:2;2563:10;2534:113;;;2665:6;2662:1;2659:13;2656:48;;;-1:-1:-1;;2700:1:120;2682:16;;2675:27;2452:258::o;2715:274::-;2844:3;2882:6;2876:13;2898:53;2944:6;2939:3;2932:4;2924:6;2920:17;2898:53;:::i;:::-;2967:16;;;;;2715:274;-1:-1:-1;;2715:274:120:o;3401:383::-;3550:2;3539:9;3532:21;3513:4;3582:6;3576:13;3625:6;3620:2;3609:9;3605:18;3598:34;3641:66;3700:6;3695:2;3684:9;3680:18;3675:2;3667:6;3663:15;3641:66;:::i;:::-;3768:2;3747:15;-1:-1:-1;;3743:29:120;3728:45;;;;3775:2;3724:54;;3401:383;-1:-1:-1;;3401:383:120:o","linkReferences":{}},"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockProxy.sol\":\"MockProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}]},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeAdmin"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockProxy.sol":"MockProxy"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file diff --git a/out/MockProxyAdmin.sol/MockProxyAdmin.json b/out/MockProxyAdmin.sol/MockProxyAdmin.json new file mode 100644 index 00000000..6a7f96a5 --- /dev/null +++ b/out/MockProxyAdmin.sol/MockProxyAdmin.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"changeProxyAdmin","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"},{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getProxyAdmin","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getProxyImplementation","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgrade","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"},{"name":"implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeAndCall","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"},{"name":"implementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c0033","sourceMap":"134:103:92:-:0;;;178:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:41;719:10:52;936:18:41;:32::i;:::-;178:57:92;134:103;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:290:120:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:120;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:120:o;:::-;134:103:92;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c0033","sourceMap":"134:103:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;635:437:48;;;;;;;;;;-1:-1:-1;635:437:48;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;661:32:120;;;643:51;;631:2;616:18;635:437:48;;;;;;;1831:101:41;;;;;;;;;;;;;:::i;:::-;;1825:148:48;;;;;;;;;;-1:-1:-1;1825:148:48;;;;;:::i;:::-;;:::i;1201:85:41:-;;;;;;;;;;-1:-1:-1;1247:7:41;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;2593:244:48;;;;;;:::i;:::-;;:::i;2178:149::-;;;;;;;;;;-1:-1:-1;2178:149:48;;;;;:::i;:::-;;:::i;2081:198:41:-;;;;;;;;;;-1:-1:-1;2081:198:41;;;;;:::i;:::-;;:::i;1232:419:48:-;;;;;;;;;;-1:-1:-1;1232:419:48;;;;;:::i;:::-;;:::i;635:437::-;731:7;908:12;922:23;957:5;-1:-1:-1;;;;;949:25:48;:40;;;;-1:-1:-1;;;3104:33:120;;3162:1;3153:11;;2903:267;949:40:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;907:82;;;;1007:7;999:16;;;;;;1043:10;1032:33;;;;;;;;;;;;:::i;:::-;1025:40;635:437;-1:-1:-1;;;;635:437:48:o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1825:148:48:-;1094:13:41;:11;:13::i;:::-;1939:27:48::1;::::0;-1:-1:-1;;;1939:27:48;;-1:-1:-1;;;;;661:32:120;;;1939:27:48::1;::::0;::::1;643:51:120::0;1939:17:48;::::1;::::0;::::1;::::0;616:18:120;;1939:27:48::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1825:148:::0;;:::o;2593:244::-;1094:13:41;:11;:13::i;:::-;2768:62:48::1;::::0;-1:-1:-1;;;2768:62:48;;-1:-1:-1;;;;;2768:22:48;::::1;::::0;::::1;::::0;2798:9:::1;::::0;2768:62:::1;::::0;2809:14;;2825:4;;2768:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;2593:244:::0;;;:::o;2178:149::-;1094:13:41;:11;:13::i;:::-;2289:31:48::1;::::0;-1:-1:-1;;;2289:31:48;;-1:-1:-1;;;;;661:32:120;;;2289:31:48::1;::::0;::::1;643:51:120::0;2289:15:48;::::1;::::0;::::1;::::0;616:18:120;;2289:31:48::1;497:203:120::0;2081:198:41;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;4367:2:120;2161:73:41::1;::::0;::::1;4349:21:120::0;4406:2;4386:18;;;4379:30;4445:34;4425:18;;;4418:62;-1:-1:-1;;;4496:18:120;;;4489:36;4542:19;;2161:73:41::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1232:419:48:-;1319:7;1487:12;1501:23;1536:5;-1:-1:-1;;;;;1528:25:48;:40;;;;-1:-1:-1;;;4773:33:120;;4831:1;4822:11;;4572:267;1359:130:41;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;5046:2:120;1414:68:41;;;5028:21:120;;;5065:18;;;5058:30;5124:34;5104:18;;;5097:62;5176:18;;1414:68:41;4844:356:120;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:160:120:-;-1:-1:-1;;;;;118:31:120;;108:42;;98:70;;164:1;161;154:12;179:313;275:6;328:2;316:9;307:7;303:23;299:32;296:52;;;344:1;341;334:12;296:52;383:9;370:23;402:60;456:5;402:60;:::i;:::-;481:5;179:313;-1:-1:-1;;;179:313:120:o;705:483::-;810:6;818;871:2;859:9;850:7;846:23;842:32;839:52;;;887:1;884;877:12;839:52;926:9;913:23;945:60;999:5;945:60;:::i;:::-;1024:5;-1:-1:-1;1081:2:120;1066:18;;1053:32;1094:62;1053:32;1094:62;:::i;:::-;1175:7;1165:17;;;705:483;;;;;:::o;1193:127::-;1254:10;1249:3;1245:20;1242:1;1235:31;1285:4;1282:1;1275:15;1309:4;1306:1;1299:15;1325:1292;1448:6;1456;1464;1517:2;1505:9;1496:7;1492:23;1488:32;1485:52;;;1533:1;1530;1523:12;1485:52;1572:9;1559:23;1591:60;1645:5;1591:60;:::i;:::-;1670:5;-1:-1:-1;1727:2:120;1712:18;;1699:32;1740:62;1699:32;1740:62;:::i;:::-;1821:7;-1:-1:-1;1879:2:120;1864:18;;1851:32;1902:18;1932:14;;;1929:34;;;1959:1;1956;1949:12;1929:34;1997:6;1986:9;1982:22;1972:32;;2042:7;2035:4;2031:2;2027:13;2023:27;2013:55;;2064:1;2061;2054:12;2013:55;2100:2;2087:16;2122:2;2118;2115:10;2112:36;;;2128:18;;:::i;:::-;2203:2;2197:9;2171:2;2257:13;;-1:-1:-1;;2253:22:120;;;2277:2;2249:31;2245:40;2233:53;;;2301:18;;;2321:22;;;2298:46;2295:72;;;2347:18;;:::i;:::-;2387:10;2383:2;2376:22;2422:2;2414:6;2407:18;2462:7;2457:2;2452;2448;2444:11;2440:20;2437:33;2434:53;;;2483:1;2480;2473:12;2434:53;2539:2;2534;2530;2526:11;2521:2;2513:6;2509:15;2496:46;2584:1;2579:2;2574;2566:6;2562:15;2558:24;2551:35;2605:6;2595:16;;;;;;;1325:1292;;;;;:::o;3175:288::-;3253:6;3306:2;3294:9;3285:7;3281:23;3277:32;3274:52;;;3322:1;3319;3312:12;3274:52;3354:9;3348:16;3373:60;3427:5;3373:60;:::i;3468:692::-;3672:1;3668;3663:3;3659:11;3655:19;3647:6;3643:32;3632:9;3625:51;3606:4;3695:2;3733;3728;3717:9;3713:18;3706:30;3765:6;3759:13;3808:6;3803:2;3792:9;3788:18;3781:34;3833:1;3843:140;3857:6;3854:1;3851:13;3843:140;;;3952:14;;;3948:23;;3942:30;3918:17;;;3937:2;3914:26;3907:66;3872:10;;3843:140;;;4001:6;3998:1;3995:13;3992:91;;;4071:1;4066:2;4057:6;4046:9;4042:22;4038:31;4031:42;3992:91;-1:-1:-1;4144:2:120;4123:15;-1:-1:-1;;4119:29:120;4104:45;;;;4151:2;4100:54;;3468:692;-1:-1:-1;;;;3468:692:120:o","linkReferences":{}},"methodIdentifiers":{"changeProxyAdmin(address,address)":"7eff275e","getProxyAdmin(address)":"f3b7dead","getProxyImplementation(address)":"204e1c7a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgrade(address,address)":"99a88ec4","upgradeAndCall(address,address,bytes)":"9623609d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"details\":\"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`.\"},\"getProxyAdmin(address)\":{\"details\":\"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"getProxyImplementation(address)\":{\"details\":\"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgrade(address,address)\":{\"details\":\"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockProxyAdmin.sol\":\"MockProxyAdmin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeProxyAdmin"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"stateMutability":"view","type":"function","name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"stateMutability":"view","type":"function","name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgrade"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeAndCall"}],"devdoc":{"kind":"dev","methods":{"changeProxyAdmin(address,address)":{"details":"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`."},"getProxyAdmin(address)":{"details":"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"getProxyImplementation(address)":{"details":"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgrade(address,address)":{"details":"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`."},"upgradeAndCall(address,address,bytes)":{"details":"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockProxyAdmin.sol":"MockProxyAdmin"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"}},"version":1},"id":92} \ No newline at end of file diff --git a/out/MockStakeRegistry.sol/MockStakeRegistry.json b/out/MockStakeRegistry.sol/MockStakeRegistry.json new file mode 100644 index 00000000..5ce42cee --- /dev/null +++ b/out/MockStakeRegistry.sol/MockStakeRegistry.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"strategyParamsByIndex","inputs":[{"name":"","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct MockStakeRegistry.StrategyParams","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c0033","sourceMap":"147:572:93:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c0033","sourceMap":"147:572:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:373;;;;;;:::i;:::-;;:::i;:::-;;;;590:13:120;;-1:-1:-1;;;;;586:39:120;568:58;;686:4;674:17;;;668:24;694:26;664:57;642:20;;;635:87;;;;541:18;344:373:93;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;457:10:93;453:144;;-1:-1:-1;490:96:93;;;;;;;;;526:42;490:96;;583:1;490:96;;;;483:103;;453:144;-1:-1:-1;614:96:93;;;;;;;;;650:42;614:96;;707:1;614:96;;;;344:373;;;;;:::o;14:337:120:-;80:6;88;141:2;129:9;120:7;116:23;112:32;109:52;;;157:1;154;147:12;109:52;196:9;183:23;246:4;239:5;235:16;228:5;225:27;215:55;;266:1;263;256:12;215:55;289:5;341:2;326:18;;;;313:32;;-1:-1:-1;;;14:337:120:o","linkReferences":{}},"methodIdentifiers":{"strategyParamsByIndex(uint8,uint256)":"adc804da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"strategyParamsByIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct MockStakeRegistry.StrategyParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockStakeRegistry.sol\":\"MockStakeRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"pure","type":"function","name":"strategyParamsByIndex","outputs":[{"internalType":"struct MockStakeRegistry.StrategyParams","name":"","type":"tuple","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockStakeRegistry.sol":"MockStakeRegistry"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"}},"version":1},"id":93} \ No newline at end of file diff --git a/out/MockStrategyManager.sol/MockStrategyManager.json b/out/MockStrategyManager.sol/MockStrategyManager.json new file mode 100644 index 00000000..50d919f4 --- /dev/null +++ b/out/MockStrategyManager.sol/MockStrategyManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"getDeposits","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033","sourceMap":"125:350:94:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033","sourceMap":"125:350:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;160:313;;;;;;:::i;:::-;-1:-1:-1;318:18:94;;;275:40;318:18;;;;;;387:16;;;;;;;;;318:18;160:313;;;;;;;;;:::i;:::-;;;;;;;;14:286:120;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:120;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:120:o;305:1197::-;592:2;604:21;;;674:13;;577:18;;;696:22;;;544:4;;771;;749:2;734:18;;;798:15;;;544:4;841:195;855:6;852:1;849:13;841:195;;;920:13;;-1:-1:-1;;;;;916:39:120;904:52;;976:12;;;;1011:15;;;;952:1;870:9;841:195;;;-1:-1:-1;;;1072:19:120;;;1052:18;;;1045:47;1142:13;;1164:21;;;1240:15;;;;1203:12;;;1275:1;1285:189;1301:8;1296:3;1293:17;1285:189;;;1370:15;;1356:30;;1447:17;;;;1408:14;;;;1329:1;1320:11;1285:189;;;-1:-1:-1;1491:5:120;;305:1197;-1:-1:-1;;;;;;;305:1197:120:o","linkReferences":{}},"methodIdentifiers":{"getDeposits(address)":"94f649dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getDeposits\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/MockStrategyManager.sol\":\"MockStrategyManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getDeposits","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/MockStrategyManager.sol":"MockStrategyManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"}},"version":1},"id":94} \ No newline at end of file diff --git a/out/MockUniswapV3Pool.sol/MockUniswapV3Pool.json b/out/MockUniswapV3Pool.sol/MockUniswapV3Pool.json new file mode 100644 index 00000000..04dacb48 --- /dev/null +++ b/out/MockUniswapV3Pool.sol/MockUniswapV3Pool.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_tokenA","type":"address","internalType":"address"},{"name":"_tokenB","type":"address","internalType":"address"},{"name":"_observationCardinality","type":"uint16","internalType":"uint16"}],"stateMutability":"nonpayable"},{"type":"function","name":"observations","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockTimestamp","type":"uint32","internalType":"uint32"},{"name":"tickCumulative","type":"int56","internalType":"int56"},{"name":"initialized","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setObservations","inputs":[{"name":"_blockTimestamps","type":"uint32[]","internalType":"uint32[]"},{"name":"_tickCumulatives","type":"int56[]","internalType":"int56[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlot0","inputs":[{"name":"_tick","type":"int24","internalType":"int24"},{"name":"_observationIndex","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slot0","inputs":[],"outputs":[{"name":"tick","type":"int24","internalType":"int24"},{"name":"observationIndex","type":"uint16","internalType":"uint16"},{"name":"observationCardinality","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"token0","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"token1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60c060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610134565b6000610047848460006100ad60201b61050d1760201c565b80516001600160a01b0390811660805260208201511660a0526000805461ffff60281b19166501000000000061ffff86160217905590505b61ffff8216156100a457600180548101815560005261009d82610182565b915061007f565b505050506101ae565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156100e8579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b80516001600160a01b038116811461012f57600080fd5b919050565b60008060006060848603121561014957600080fd5b61015284610118565b925061016060208501610118565b9150604084015161ffff8116811461017757600080fd5b809150509250925092565b600061ffff8216806101a457634e487b7160e01b600052601160045260246000fd5b6000190192915050565b60805160a0516107546101d2600039600061014b01526000606c01526107546000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630dfe168114610067578063252c09d7146100ab5780633850c7bd146100e557806346d61dc014610131578063d21220a714610146578063f814bf531461016d575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610578565b610180565b6040805163ffffffff909416845260069290920b60208401521515908201526060016100a2565b60005461010c90600281900b9061ffff630100000082048116916501000000000090041683565b6040805160029490940b845261ffff92831660208501529116908201526060016100a2565b61014461013f3660046105dd565b6101be565b005b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61014461017b366004610649565b610424565b6001818154811061019057600080fd5b60009182526020909120015463ffffffff81169150640100000000810460060b90600160581b900460ff1683565b8281146102575760405162461bcd60e51b815260206004820152605660248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527574687320286d757374206265206d61746368696e672960501b608482015260a4015b60405180910390fd5b60005465010000000000900461ffff168311156103175760405162461bcd60e51b815260206004820152606c60248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527f74687320286d757374206265203c20736c6f74302e6f62736572766174696f6e60848201526b43617264696e616c6974792960a01b60a482015260c40161024e565b60005b8381101561041d57604051806060016040528086868481811061033f5761033f61068f565b905060200201602081019061035491906106a5565b63ffffffff1681526020018484848181106103715761037161068f565b905060200201602081019061038691906106d2565b60060b815260200160011515815250600182815481106103a8576103a861068f565b6000918252602091829020835191018054928401516040909401511515600160581b0260ff60581b1966ffffffffffffff909516640100000000026affffffffffffffffffffff1990941663ffffffff909316929092179290921792909216919091179055610416816106f5565b905061031a565b5050505050565b60005461ffff650100000000009091048116908216106104e35760405162461bcd60e51b815260206004820152606860248201527f4d6f636b556e69737761705633506f6f6c23736574536c6f74302063616c6c6560448201527f64207769746820696e76616c6964206f62736572766174696f6e496e6465782060648201527f286d757374206265203c20736c6f74302e6f62736572766174696f6e43617264608482015267696e616c6974792960c01b60a482015260c40161024e565b6000805461ffff90921663010000000264ffffffffff1990921662ffffff90931692909217179055565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115610548579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b60006020828403121561058a57600080fd5b5035919050565b60008083601f8401126105a357600080fd5b50813567ffffffffffffffff8111156105bb57600080fd5b6020830191508360208260051b85010111156105d657600080fd5b9250929050565b600080600080604085870312156105f357600080fd5b843567ffffffffffffffff8082111561060b57600080fd5b61061788838901610591565b9096509450602087013591508082111561063057600080fd5b5061063d87828801610591565b95989497509550505050565b6000806040838503121561065c57600080fd5b82358060020b811461066d57600080fd5b9150602083013561ffff8116811461068457600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156106b757600080fd5b813563ffffffff811681146106cb57600080fd5b9392505050565b6000602082840312156106e457600080fd5b81358060060b81146106cb57600080fd5b600060001982141561071757634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122034fcefcdf9029a0bad5874692cfabe102d1232edc527549319c70c7eb00f529e64736f6c634300080c0033","sourceMap":"326:2064:119:-:0;;;763:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;851:34;888:119;924:7;945;973:1;888:22;;;;;:119;;:::i;:::-;1027:14;;-1:-1:-1;;;;;1018:23:119;;;;;1060:14;;;;1051:23;;;1027:14;1085:54;;-1:-1:-1;;;;1085:54:119;;;;;;;;;1027:14;-1:-1:-1;1149:107:119;1156:27;;;;1149:107;;1226:12;:19;;;;;;-1:-1:-1;1226:19:119;1185:25;;;:::i;:::-;;;1149:107;;;841:421;763:499;;;326:2064;;784:274:69;326:2064:119;;;;;;;;-1:-1:-1;326:2064:119;;;;;;;;;;;;;;;;940:6:69;-1:-1:-1;;;;;931:15:69;:6;-1:-1:-1;;;;;931:15:69;;927:56;;;968:6;;976;927:56;-1:-1:-1;1000:51:69;;;;;;;;-1:-1:-1;;;;;1000:51:69;;;;;;;;;;;;;;;;;;;;;;;784:274::o;14:177:120:-;93:13;;-1:-1:-1;;;;;135:31:120;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:446::-;283:6;291;299;352:2;340:9;331:7;327:23;323:32;320:52;;;368:1;365;358:12;320:52;391:40;421:9;391:40;:::i;:::-;381:50;;450:49;495:2;484:9;480:18;450:49;:::i;:::-;440:59;;542:2;531:9;527:18;521:25;586:6;579:5;575:18;568:5;565:29;555:57;;608:1;605;598:12;555:57;631:5;621:15;;;196:446;;;;;:::o;647:278::-;685:3;729:6;722:5;718:18;755:7;745:138;;805:10;800:3;796:20;793:1;786:31;840:4;837:1;830:15;868:4;865:1;858:15;745:138;-1:-1:-1;;899:20:120;;647:278;-1:-1:-1;;647:278:120:o;:::-;326:2064:119;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100625760003560e01c80630dfe168114610067578063252c09d7146100ab5780633850c7bd146100e557806346d61dc014610131578063d21220a714610146578063f814bf531461016d575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610578565b610180565b6040805163ffffffff909416845260069290920b60208401521515908201526060016100a2565b60005461010c90600281900b9061ffff630100000082048116916501000000000090041683565b6040805160029490940b845261ffff92831660208501529116908201526060016100a2565b61014461013f3660046105dd565b6101be565b005b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61014461017b366004610649565b610424565b6001818154811061019057600080fd5b60009182526020909120015463ffffffff81169150640100000000810460060b90600160581b900460ff1683565b8281146102575760405162461bcd60e51b815260206004820152605660248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527574687320286d757374206265206d61746368696e672960501b608482015260a4015b60405180910390fd5b60005465010000000000900461ffff168311156103175760405162461bcd60e51b815260206004820152606c60248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527f74687320286d757374206265203c20736c6f74302e6f62736572766174696f6e60848201526b43617264696e616c6974792960a01b60a482015260c40161024e565b60005b8381101561041d57604051806060016040528086868481811061033f5761033f61068f565b905060200201602081019061035491906106a5565b63ffffffff1681526020018484848181106103715761037161068f565b905060200201602081019061038691906106d2565b60060b815260200160011515815250600182815481106103a8576103a861068f565b6000918252602091829020835191018054928401516040909401511515600160581b0260ff60581b1966ffffffffffffff909516640100000000026affffffffffffffffffffff1990941663ffffffff909316929092179290921792909216919091179055610416816106f5565b905061031a565b5050505050565b60005461ffff650100000000009091048116908216106104e35760405162461bcd60e51b815260206004820152606860248201527f4d6f636b556e69737761705633506f6f6c23736574536c6f74302063616c6c6560448201527f64207769746820696e76616c6964206f62736572766174696f6e496e6465782060648201527f286d757374206265203c20736c6f74302e6f62736572766174696f6e43617264608482015267696e616c6974792960c01b60a482015260c40161024e565b6000805461ffff90921663010000000264ffffffffff1990921662ffffff90931692909217179055565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115610548579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b60006020828403121561058a57600080fd5b5035919050565b60008083601f8401126105a357600080fd5b50813567ffffffffffffffff8111156105bb57600080fd5b6020830191508360208260051b85010111156105d657600080fd5b9250929050565b600080600080604085870312156105f357600080fd5b843567ffffffffffffffff8082111561060b57600080fd5b61061788838901610591565b9096509450602087013591508082111561063057600080fd5b5061063d87828801610591565b95989497509550505050565b6000806040838503121561065c57600080fd5b82358060020b811461066d57600080fd5b9150602083013561ffff8116811461068457600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156106b757600080fd5b813563ffffffff811681146106cb57600080fd5b9392505050565b6000602082840312156106e457600080fd5b81358060060b81146106cb57600080fd5b600060001982141561071757634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122034fcefcdf9029a0bad5874692cfabe102d1232edc527549319c70c7eb00f529e64736f6c634300080c0033","sourceMap":"326:2064:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;359:31;;;;;;;;-1:-1:-1;;;;;178:32:120;;;160:51;;148:2;133:18;359:31:119;;;;;;;;723:33;;;;;;:::i;:::-;;:::i;:::-;;;;627:10:120;615:23;;;597:42;;686:1;675:21;;;;670:2;655:18;;648:49;740:14;733:22;713:18;;;706:50;585:2;570:18;723:33:119;407:355:120;579:18:119;;;;;;;;;;;;;;;;;;;;;;;;;;;990:1:120;979:21;;;;961:40;;1020:6;1062:15;;;1057:2;1042:18;;1035:43;1114:15;;1094:18;;;1087:43;949:2;934:18;579::119;767:369:120;1326:693:119;;;;;;:::i;:::-;;:::i;:::-;;396:31;;;;;2025:363;;;;;;:::i;:::-;;:::i;723:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;723:33:119;;;;;;-1:-1:-1;;;723:33:119;;;;;:::o;1326:693::-;1462:50;;;1441:183;;;;-1:-1:-1;;;1441:183:119;;2933:2:120;1441:183:119;;;2915:21:120;2972:2;2952:18;;;2945:30;3011:34;2991:18;;;2984:62;3082:34;3062:18;;;3055:62;-1:-1:-1;;;3133:19:120;;;3126:53;3196:19;;1441:183:119;;;;;;;;;1682:5;:28;;;;;;1655:55;;;1634:210;;;;-1:-1:-1;;;1634:210:119;;3428:2:120;1634:210:119;;;3410:21:120;3467:3;3447:18;;;3440:31;3507:34;3487:18;;;3480:62;3578:34;3558:18;;;3551:62;3650:34;3629:19;;;3622:63;-1:-1:-1;;;3701:19:120;;;3694:43;3754:19;;1634:210:119;3226:553:120;1634:210:119;1860:10;1855:158;1872:28;;;1855:158;;;1941:61;;;;;;;;1953:16;;1970:2;1953:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1941:61;;;;;;1975:16;;1992:2;1975:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1941:61;;;;;;1997:4;1941:61;;;;;1922:12;1935:2;1922:16;;;;;;;;:::i;:::-;;;;;;;;;;:80;;:16;;:80;;;;;;;;;;;;;-1:-1:-1;;;1922:80:119;-1:-1:-1;;;;1922:80:119;;;;;;-1:-1:-1;;1922:80:119;;;;;;;;;;;;;;;;;;;;;;;;;1902:4;;;:::i;:::-;;;1855:158;;;;1326:693;;;;:::o;2025:363::-;2142:5;:28;;;;;;;;2122:48;;;;2101:199;;;;-1:-1:-1;;;2101:199:119;;4914:2:120;2101:199:119;;;4896:21:120;4953:3;4933:18;;;4926:31;4993:34;4973:18;;;4966:62;5064:34;5044:18;;;5037:62;5136:34;5115:19;;;5108:63;-1:-1:-1;;;5187:19:120;;;5180:39;5236:19;;2101:199:119;4712:549:120;2101:199:119;2311:5;:18;;2339:42;;;;;;-1:-1:-1;;2339:42:119;;;2311:18;;;;2339:42;;;;;;;2025:363::o;784:274:69:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;940:6:69;-1:-1:-1;;;;;931:15:69;:6;-1:-1:-1;;;;;931:15:69;;927:56;;;968:6;;976;927:56;-1:-1:-1;1000:51:69;;;;;;;;-1:-1:-1;;;;;1000:51:69;;;;;;;;;;;;;;;;;;;;;;;784:274::o;222:180:120:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;-1:-1:-1;373:23:120;;222:180;-1:-1:-1;222:180:120:o;1141:366::-;1203:8;1213:6;1267:3;1260:4;1252:6;1248:17;1244:27;1234:55;;1285:1;1282;1275:12;1234:55;-1:-1:-1;1308:20:120;;1351:18;1340:30;;1337:50;;;1383:1;1380;1373:12;1337:50;1420:4;1412:6;1408:17;1396:29;;1480:3;1473:4;1463:6;1460:1;1456:14;1448:6;1444:27;1440:38;1437:47;1434:67;;;1497:1;1494;1487:12;1434:67;1141:366;;;;;:::o;1512:768::-;1631:6;1639;1647;1655;1708:2;1696:9;1687:7;1683:23;1679:32;1676:52;;;1724:1;1721;1714:12;1676:52;1764:9;1751:23;1793:18;1834:2;1826:6;1823:14;1820:34;;;1850:1;1847;1840:12;1820:34;1889:69;1950:7;1941:6;1930:9;1926:22;1889:69;:::i;:::-;1977:8;;-1:-1:-1;1863:95:120;-1:-1:-1;2065:2:120;2050:18;;2037:32;;-1:-1:-1;2081:16:120;;;2078:36;;;2110:1;2107;2100:12;2078:36;;2149:71;2212:7;2201:8;2190:9;2186:24;2149:71;:::i;:::-;1512:768;;;;-1:-1:-1;2239:8:120;-1:-1:-1;;;;1512:768:120:o;2285:441::-;2350:6;2358;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;2466:9;2453:23;2519:5;2516:1;2505:20;2498:5;2495:31;2485:59;;2540:1;2537;2530:12;2485:59;2563:5;-1:-1:-1;2620:2:120;2605:18;;2592:32;2668:6;2655:20;;2643:33;;2633:61;;2690:1;2687;2680:12;2633:61;2713:7;2703:17;;;2285:441;;;;;:::o;3784:127::-;3845:10;3840:3;3836:20;3833:1;3826:31;3876:4;3873:1;3866:15;3900:4;3897:1;3890:15;3916:276;3974:6;4027:2;4015:9;4006:7;4002:23;3998:32;3995:52;;;4043:1;4040;4033:12;3995:52;4082:9;4069:23;4132:10;4125:5;4121:22;4114:5;4111:33;4101:61;;4158:1;4155;4148:12;4101:61;4181:5;3916:276;-1:-1:-1;;;3916:276:120:o;4197:273::-;4254:6;4307:2;4295:9;4286:7;4282:23;4278:32;4275:52;;;4323:1;4320;4313:12;4275:52;4362:9;4349:23;4415:5;4412:1;4401:20;4394:5;4391:31;4381:59;;4436:1;4433;4426:12;4475:232;4514:3;-1:-1:-1;;4535:17:120;;4532:140;;;4594:10;4589:3;4585:20;4582:1;4575:31;4629:4;4626:1;4619:15;4657:4;4654:1;4647:15;4532:140;-1:-1:-1;4699:1:120;4688:13;;4475:232::o","linkReferences":{},"immutableReferences":{"53393":[{"start":108,"length":32}],"53395":[{"start":331,"length":32}]}},"methodIdentifiers":{"observations(uint256)":"252c09d7","setObservations(uint32[],int56[])":"46d61dc0","setSlot0(int24,uint16)":"f814bf53","slot0()":"3850c7bd","token0()":"0dfe1681","token1()":"d21220a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenB\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_observationCardinality\",\"type\":\"uint16\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"observations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"blockTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"int56\",\"name\":\"tickCumulative\",\"type\":\"int56\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_blockTimestamps\",\"type\":\"uint32[]\"},{\"internalType\":\"int56[]\",\"name\":\"_tickCumulatives\",\"type\":\"int56[]\"}],\"name\":\"setObservations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"_tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"_observationIndex\",\"type\":\"uint16\"}],\"name\":\"setSlot0\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slot0\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint16\",\"name\":\"observationIndex\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"observationCardinality\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Stripped-down essentials of a UniswapV3Pool for oracle testscopied from https://github.com/sohkai/uniswap-v3-spot-twap-oracle/blob/main/contracts/test/MockUniswapV3Pool.sol\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setObservations(uint32[],int56[])\":{\"notice\":\"Mocking management *\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/mocks/MockUniswapV3Pool.sol\":\"MockUniswapV3Pool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df\",\"dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E\"]},\"test/mocks/MockUniswapV3Pool.sol\":{\"keccak256\":\"0x409cdf07665b4eac9b4ec77a76b04c5097c06434fc6613aef3969dd58b9beda0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb78ec12fb6f64ce1e056cc25ded3075abae785666540e6c5dee633e960fffa7\",\"dweb:/ipfs/QmdNXdkywQA1rinQFxyKsWpsSLhABFoaQV3YYpyc1T1xT9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"uint16","name":"_observationCardinality","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"bool","name":"initialized","type":"bool"}]},{"inputs":[{"internalType":"uint32[]","name":"_blockTimestamps","type":"uint32[]"},{"internalType":"int56[]","name":"_tickCumulatives","type":"int56[]"}],"stateMutability":"nonpayable","type":"function","name":"setObservations"},{"inputs":[{"internalType":"int24","name":"_tick","type":"int24"},{"internalType":"uint16","name":"_observationIndex","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlot0"},{"inputs":[],"stateMutability":"view","type":"function","name":"slot0","outputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"setObservations(uint32[],int56[])":{"notice":"Mocking management *"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/mocks/MockUniswapV3Pool.sol":"MockUniswapV3Pool"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-periphery/contracts/libraries/PoolAddress.sol":{"keccak256":"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f","urls":["bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df","dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E"],"license":"GPL-2.0-or-later"},"test/mocks/MockUniswapV3Pool.sol":{"keccak256":"0x409cdf07665b4eac9b4ec77a76b04c5097c06434fc6613aef3969dd58b9beda0","urls":["bzz-raw://fb78ec12fb6f64ce1e056cc25ded3075abae785666540e6c5dee633e960fffa7","dweb:/ipfs/QmdNXdkywQA1rinQFxyKsWpsSLhABFoaQV3YYpyc1T1xT9"],"license":"UNLICENSED"}},"version":1},"id":119} \ No newline at end of file diff --git a/out/OracleLibrary.sol/OracleLibrary.json b/out/OracleLibrary.sol/OracleLibrary.json new file mode 100644 index 00000000..ba7e3da4 --- /dev/null +++ b/out/OracleLibrary.sol/OracleLibrary.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220961b35242500b77d2df7f3555acde43c17a30d299de39d7b01889aeca167013164736f6c634300080c0033","sourceMap":"356:9107:68:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;356:9107:68;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220961b35242500b77d2df7f3555acde43c17a30d299de39d7b01889aeca167013164736f6c634300080c0033","sourceMap":"356:9107:68:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Oracle library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions to integrate with V3 pool oracle\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":\"OracleLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-periphery/contracts/libraries/OracleLibrary.sol":"OracleLibrary"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968","urls":["bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e","dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"keccak256":"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b","urls":["bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa","dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43","urls":["bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea","dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/libraries/FullMath.sol":{"keccak256":"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645","urls":["bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125","dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd"],"license":"MIT"},"lib/v3-core/contracts/libraries/TickMath.sol":{"keccak256":"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129","urls":["bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c","dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/OracleLibrary.sol":{"keccak256":"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b","urls":["bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53","dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM"],"license":"GPL-2.0-or-later"}},"version":1},"id":68} \ No newline at end of file diff --git a/out/Ownable.sol/Ownable.json b/out/Ownable.sol/Ownable.json new file mode 100644 index 00000000..c505577f --- /dev/null +++ b/out/Ownable.sol/Ownable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":"Ownable"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":41} \ No newline at end of file diff --git a/out/OwnableUpgradeable.sol/OwnableUpgradeable.json b/out/OwnableUpgradeable.sol/OwnableUpgradeable.json new file mode 100644 index 00000000..0d38db3e --- /dev/null +++ b/out/OwnableUpgradeable.sol/OwnableUpgradeable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":"OwnableUpgradeable"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file diff --git a/out/Ownership.t.sol/OwnershipClientTest.json b/out/Ownership.t.sol/OwnershipClientTest.json new file mode 100644 index 00000000..9beffcea --- /dev/null +++ b/out/Ownership.t.sol/OwnershipClientTest.json @@ -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":"test_OwnerIsOwnerByDefault","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RandomAccountCannotTransferOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b61d2c480620006516000396000f3fe60806040523480156200001157600080fd5b5060043610620000e05760003560e01c806385226c811162000097578063ba414fa6116200006e578063ba414fa61462000177578063e20c9f711462000192578063ec480e4d146200019c578063fa7626d414620001a657600080fd5b806385226c81146200014a578063916a17c61462000163578063b5508aa9146200016d57600080fd5b80630948888a14620000e55780630a9254e414620000f15780631ed7831c14620000fb5780633e5e3c23146200011d5780633f7286f4146200012757806366d9a9a01462000131575b600080fd5b620000ef620001b4565b005b620000ef620002f5565b6200010562000bc0565b604051620001149190620015cf565b60405180910390f35b6200010562000c24565b6200010562000c86565b6200013b62000ce8565b6040516200011491906200161e565b6200015462000ddb565b60405162000114919062001732565b6200013b62000eb5565b6200015462000f9f565b6200018162001079565b604051901515815260200162000114565b62000105620011ae565b620000ef62001210565b600054620001819060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200021357600080fd5b505af115801562000228573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200027a57600080fd5b505af11580156200028f573d6000803e3d6000fd5b505060255460405163f2fde38b60e01b8152602160048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620002da57600080fd5b505af1158015620002ef573d6000803e3d6000fd5b50505050565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b50505050604051620003769062001560565b604051809103906000f08015801562000393573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055604051620003c2906200156d565b604051809103906000f080158015620003df573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392831617905560325460405191169062000410906200157b565b6001600160a01b039091168152602001604051809103906000f0801580156200043d573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392831617905560235460355460245460405192841693918216929116906200047c9062001589565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620004b9573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620004ee9062001597565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000522573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200059257600080fd5b505af1158015620005a7573d6000803e3d6000fd5b50505050604051620005b990620015a5565b604051809103906000f080158015620005d6573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560325460405191169062000607906200157b565b6001600160a01b039091168152602001604051809103906000f08015801562000634573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200066390620015b3565b604051809103906000f08015801562000680573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620006b59062001597565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620006e9573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007ea57600080fd5b505af1158015620007ff573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200085057600080fd5b505af115801562000865573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200089c9060019060040162001798565b600060405180830381600087803b158015620008b757600080fd5b505af1158015620008cc573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200092f57600080fd5b505af115801562000944573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620009659150620015c1565b6001600160a01b039091168152602001604051809103906000f08015801562000992573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b90620009d390600401620018f8565b600060405180830381600087803b158015620009ee57600080fd5b505af115801562000a03573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000a56906200129f565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000aab906200129f565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000afb906200129f565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000b51906200129f565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000b9e90620013be565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000c1a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bfb575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000c1a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bfb575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000c1a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bfb575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000dd25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000db957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d7a5790505b5050505050815250508152602001906001019062000d0c565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000dd257838290600052602060002001805462000e219062001929565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4f9062001929565b801562000ea05780601f1062000e745761010080835404028352916020019162000ea0565b820191906000526020600020905b81548152906001019060200180831162000e8257829003601f168201915b50505050508152602001906001019062000dff565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000dd25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f8657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000f475790505b5050505050815250508152602001906001019062000ed9565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000dd257838290600052602060002001805462000fe59062001929565b80601f0160208091040260200160405190810160405280929190818152602001828054620010139062001929565b8015620010645780601f10620010385761010080835404028352916020019162001064565b820191906000526020600020905b8154815290600101906020018083116200104657829003601f168201915b50505050508152602001906001019062000fc3565b60008054610100900460ff16156200109a5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011a95760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200112b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001966565b60408051601f1981840301815290829052620011479162001999565b6000604051808303816000865af19150503d806000811462001186576040519150601f19603f3d011682016040523d82523d6000602084013e6200118b565b606091505b5091505080806020019051810190620011a59190620019b7565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000c1a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bfb575050505050905090565b60255460408051638da5cb5b60e01b815290516200129d926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156200125d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012839190620019e2565b6001600160a01b0316306001600160a01b031614620013d2565b565b60008082604051602001620012b5919062001999565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013479190620019e2565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001385908590879060040162001a0d565b600060405180830381600087803b158015620013a057600080fd5b505af1158015620013b5573d6000803e3d6000fd5b50505050915091565b6000620013cb826200129f565b5092915050565b806200144a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620014389060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200144a6200144d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200154f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620014ea929160200162001966565b60408051601f1981840301815290829052620015069162001999565b6000604051808303816000865af19150503d806000811462001545576040519150601f19603f3d011682016040523d82523d6000602084013e6200154a565b606091505b505050505b6000805461ff001916610100179055565b60df8062001a3c83390190565b6101798062001b1b83390190565b6107678062001c9483390190565b615f0280620023fb83390190565b610deb80620082fd83390190565b61017880620090e883390190565b613799806200926083390190565b610896806200c9f983390190565b6020808252825182820181905260009190848201906040850190845b81811015620016125783516001600160a01b031683529284019291840191600101620015eb565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620016c657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620016b05783516001600160e01b0319168252928b019260019290920191908b019062001684565b50978a0197955050509187019160010162001646565b50919998505050505050505050565b60005b83811015620016f2578181015183820152602001620016d8565b83811115620002ef5750506000910152565b600081518084526200171e816020860160208601620016d5565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200178b57603f198886030184526200177885835162001704565b9450928501929085019060010162001759565b5092979650505050505050565b606081526000620017c360608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b6020815260006200192360208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c908216806200193e57607f821691505b602082108114156200196057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b03198316815281516000906200198b816004850160208701620016d5565b919091016004019392505050565b60008251620019ad818460208701620016d5565b9190910192915050565b600060208284031215620019ca57600080fd5b81518015158114620019db57600080fd5b9392505050565b600060208284031215620019f557600080fd5b81516001600160a01b0381168114620019db57600080fd5b6001600160a01b038316815260406020820181905260009062001a339083018462001704565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033a264697066735822122087e5735a0545b51bcfcacf30c2c73ddb209cb1f75da5205c232c64c56c35c25264736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;292:375:82;2329:22:116;;292:375:82;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;292:375:82;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;292:375:82:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;292:375:82;;;-1:-1:-1;292:375:82;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;292:375:82;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000e05760003560e01c806385226c811162000097578063ba414fa6116200006e578063ba414fa61462000177578063e20c9f711462000192578063ec480e4d146200019c578063fa7626d414620001a657600080fd5b806385226c81146200014a578063916a17c61462000163578063b5508aa9146200016d57600080fd5b80630948888a14620000e55780630a9254e414620000f15780631ed7831c14620000fb5780633e5e3c23146200011d5780633f7286f4146200012757806366d9a9a01462000131575b600080fd5b620000ef620001b4565b005b620000ef620002f5565b6200010562000bc0565b604051620001149190620015cf565b60405180910390f35b6200010562000c24565b6200010562000c86565b6200013b62000ce8565b6040516200011491906200161e565b6200015462000ddb565b60405162000114919062001732565b6200013b62000eb5565b6200015462000f9f565b6200018162001079565b604051901515815260200162000114565b62000105620011ae565b620000ef62001210565b600054620001819060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200021357600080fd5b505af115801562000228573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200027a57600080fd5b505af11580156200028f573d6000803e3d6000fd5b505060255460405163f2fde38b60e01b8152602160048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620002da57600080fd5b505af1158015620002ef573d6000803e3d6000fd5b50505050565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200034f57600080fd5b505af115801562000364573d6000803e3d6000fd5b50505050604051620003769062001560565b604051809103906000f08015801562000393573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055604051620003c2906200156d565b604051809103906000f080158015620003df573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b0392831617905560325460405191169062000410906200157b565b6001600160a01b039091168152602001604051809103906000f0801580156200043d573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392831617905560235460355460245460405192841693918216929116906200047c9062001589565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620004b9573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620004ee9062001597565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000522573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200059257600080fd5b505af1158015620005a7573d6000803e3d6000fd5b50505050604051620005b990620015a5565b604051809103906000f080158015620005d6573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560325460405191169062000607906200157b565b6001600160a01b039091168152602001604051809103906000f08015801562000634573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200066390620015b3565b604051809103906000f08015801562000680573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620006b59062001597565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620006e9573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007ea57600080fd5b505af1158015620007ff573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200085057600080fd5b505af115801562000865573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200089c9060019060040162001798565b600060405180830381600087803b158015620008b757600080fd5b505af1158015620008cc573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200092f57600080fd5b505af115801562000944573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620009659150620015c1565b6001600160a01b039091168152602001604051809103906000f08015801562000992573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b90620009d390600401620018f8565b600060405180830381600087803b158015620009ee57600080fd5b505af115801562000a03573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000a56906200129f565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000aab906200129f565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000afb906200129f565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000b51906200129f565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000b9e90620013be565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000c1a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bfb575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000c1a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bfb575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000c1a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bfb575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000dd25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000db957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d7a5790505b5050505050815250508152602001906001019062000d0c565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000dd257838290600052602060002001805462000e219062001929565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4f9062001929565b801562000ea05780601f1062000e745761010080835404028352916020019162000ea0565b820191906000526020600020905b81548152906001019060200180831162000e8257829003601f168201915b50505050508152602001906001019062000dff565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000dd25760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f8657602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000f475790505b5050505050815250508152602001906001019062000ed9565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000dd257838290600052602060002001805462000fe59062001929565b80601f0160208091040260200160405190810160405280929190818152602001828054620010139062001929565b8015620010645780601f10620010385761010080835404028352916020019162001064565b820191906000526020600020905b8154815290600101906020018083116200104657829003601f168201915b50505050508152602001906001019062000fc3565b60008054610100900460ff16156200109a5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011a95760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200112b917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001966565b60408051601f1981840301815290829052620011479162001999565b6000604051808303816000865af19150503d806000811462001186576040519150601f19603f3d011682016040523d82523d6000602084013e6200118b565b606091505b5091505080806020019051810190620011a59190620019b7565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000c1a576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bfb575050505050905090565b60255460408051638da5cb5b60e01b815290516200129d926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156200125d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012839190620019e2565b6001600160a01b0316306001600160a01b031614620013d2565b565b60008082604051602001620012b5919062001999565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001321573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013479190620019e2565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001385908590879060040162001a0d565b600060405180830381600087803b158015620013a057600080fd5b505af1158015620013b5573d6000803e3d6000fd5b50505050915091565b6000620013cb826200129f565b5092915050565b806200144a577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620014389060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200144a6200144d565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200154f5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620014ea929160200162001966565b60408051601f1981840301815290829052620015069162001999565b6000604051808303816000865af19150503d806000811462001545576040519150601f19603f3d011682016040523d82523d6000602084013e6200154a565b606091505b505050505b6000805461ff001916610100179055565b60df8062001a3c83390190565b6101798062001b1b83390190565b6107678062001c9483390190565b615f0280620023fb83390190565b610deb80620082fd83390190565b61017880620090e883390190565b613799806200926083390190565b610896806200c9f983390190565b6020808252825182820181905260009190848201906040850190845b81811015620016125783516001600160a01b031683529284019291840191600101620015eb565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620016c657898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620016b05783516001600160e01b0319168252928b019260019290920191908b019062001684565b50978a0197955050509187019160010162001646565b50919998505050505050505050565b60005b83811015620016f2578181015183820152602001620016d8565b83811115620002ef5750506000910152565b600081518084526200171e816020860160208601620016d5565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200178b57603f198886030184526200177885835162001704565b9450928501929085019060010162001759565b5092979650505050505050565b606081526000620017c360608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b6020815260006200192360208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c908216806200193e57607f821691505b602082108114156200196057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b03198316815281516000906200198b816004850160208701620016d5565b919091016004019392505050565b60008251620019ad818460208701620016d5565b9190910192915050565b600060208284031215620019ca57600080fd5b81518015158114620019db57600080fd5b9392505050565b600060208284031215620019f557600080fd5b81516001600160a01b0381168114620019db57600080fd5b6001600160a01b038316815260406020820181905260009062001a339083018462001704565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033a264697066735822122087e5735a0545b51bcfcacf30c2c73ddb209cb1f75da5205c232c64c56c35c25264736f6c634300080c0033","sourceMap":"292:375:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:188;;;:::i;:::-;;192:2146:114;;;:::i;2161:134:26:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3750:14:120;;3743:22;3725:41;;3713:2;3698:18;1819:584:20;3585:187:120;2013:142:26;;;:::i;350:121:82:-;;;:::i;1572:26:20:-;;;;;;;;;477:188:82;317:28:21;309:37;;-1:-1:-1;;;;;547:15:82;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;574:21:82;;-1:-1:-1;;;574:21:82;;591:2;574:21;;;3923:51:120;574:8:82;;-1:-1:-1;574:8:82;;-1:-1:-1;3896:18:120;;574:21:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;605:22:82;;:53;;-1:-1:-1;;;605:53:82;;654:2;605:53;;;3923:51:120;-1:-1:-1;;;;;605:22:82;;;;-1:-1:-1;605:40:82;;-1:-1:-1;3896:18:120;;605:53:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:188::o;192:2146:114:-;240:5;;226:20;;-1:-1:-1;;;226:20:114;;-1:-1:-1;;;;;240:5:114;;;226:20;;;3923:51:120;226:13:114;;;;3896:18:120;;226:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;256:15:114;:43;;-1:-1:-1;;;;;;256:43:114;-1:-1:-1;;;;;256:43:114;;;;;;;;;;327:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;309:15:114;:43;;-1:-1:-1;;;;;;309:43:114;-1:-1:-1;;;;;309:43:114;;;;;;407:5;;388:25;;407:5;;;388:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;388:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;363:22:114;:50;;-1:-1:-1;;;;;;363:50:114;-1:-1:-1;;;;;363:50:114;;;;;;503:15;;521:7;;538:15;;469:86;;503:15;;;;521:7;;;;538:15;;;469:86;;;:::i;:::-;-1:-1:-1;;;;;4243:15:120;;;4225:34;;4295:15;;;4290:2;4275:18;;4268:43;4347:15;;;4342:2;4327:18;;4320:43;4175:2;4160:18;469:86:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:31:114;:132;;-1:-1:-1;;;;;;423:132:114;-1:-1:-1;;;;;423:132:114;;;;;;;;;692:22;;628:88;;423:132;;692:22;;628:88;;;:::i;:::-;-1:-1:-1;;;;;4604:15:120;;;4586:34;;4656:15;;4651:2;4636:18;;4629:43;4536:2;4521:18;628:88:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:17:114;:162;;-1:-1:-1;;;;;;565:162:114;-1:-1:-1;;;;;565:162:114;;;;;;;;;797:14;;737:82;;-1:-1:-1;;;737:82:114;;774:4;737:82;;;4993:34:120;797:14:114;;5043:18:120;;;5036:43;-1:-1:-1;5095:18:120;;;5088:34;;;5138:18;;;5131:34;565:162:114;737:28;;4927:19:120;;737:82:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;830:13:114;:39;;-1:-1:-1;;;;;;830:39:114;-1:-1:-1;;;;;830:39:114;;;;;;920:5;;901:25;;920:5;;;901:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;901:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;879:19:114;:47;;-1:-1:-1;;;;;;879:47:114;-1:-1:-1;;;;;879:47:114;;;;;;;;;;967:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;936:28:114;:51;;-1:-1:-1;;;;;;936:51:114;-1:-1:-1;;;;;936:51:114;;;;;;;;;1110:19;;1049:82;;936:51;;1110:19;;1049:82;;;:::i;:::-;-1:-1:-1;;;;;4604:15:120;;;4586:34;;4656:15;;4651:2;4636:18;;4629:43;4536:2;4521:18;1049:82:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;997:14:114;:136;;-1:-1:-1;;;;;;997:136:114;-1:-1:-1;;;;;997:136:114;;;;;;;;;1209:10;;1241:17;;1281:13;;1143:263;;-1:-1:-1;;;1143:263:114;;1190:4;1143:263;;;5509:34:120;1209:10:114;;;5559:18:120;;;5552:43;1241:17:114;;;5611:18:120;;;5604:43;;;1281:13:114;;5663:18:120;;;5656:43;5715:19;;;5708:44;;;;-1:-1:-1;5768:19:120;;;5761:35;997:136:114;1143:25;;5443:19:120;;1143:263:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1416:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1441:28:114;;-1:-1:-1;;;1441:28:114;;1463:4;1441:28;;;3923:51:120;1441:13:114;;-1:-1:-1;1441:13:114;;-1:-1:-1;3896:18:120;;1441:28:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1479:14:114;;:319;;-1:-1:-1;;;1479:319:114;;-1:-1:-1;;;;;1479:14:114;;;;-1:-1:-1;1479:27:114;;-1:-1:-1;1479:319:114;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1808:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1865:14:114;;1842:39;;-1:-1:-1;;;;;1865:14:114;;;;-1:-1:-1;1842:39:114;;-1:-1:-1;1842:39:114;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;1842:39:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1833:6:114;:48;;-1:-1:-1;;;;;;1833:48:114;-1:-1:-1;;;;;1833:48:114;;;;;;;;;1891:30;;-1:-1:-1;;;1891:30:114;;:16;;:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1972:6:114;;1931:22;:49;;-1:-1:-1;;;;;;1931:49:114;-1:-1:-1;;;;;1972:6:114;;;1931:49;;;;;;-1:-1:-1;;2021:29:114;;;;;;;;;;;;-1:-1:-1;;;2021:29:114;;;;;;:14;:29::i;:::-;2004:13;1990:60;1991:11;1990:60;;-1:-1:-1;;;;;;1990:60:114;-1:-1:-1;;;;;1990:60:114;;;;;;;;;;2101:34;;;;;;;;;;;;-1:-1:-1;;;2101:34:114;;;;;;:14;:34::i;:::-;2079:18;2060:75;2061:16;2060:75;;-1:-1:-1;;;;;;2060:75:114;-1:-1:-1;;;;;2060:75:114;;;;;;;;;;2176:29;;;;;;;;;;;;-1:-1:-1;;;2176:29:114;;;;;;:14;:29::i;:::-;2159:13;2145:60;;;2146:11;2145:60;;-1:-1:-1;;;;;;2145:60:114;-1:-1:-1;;;;;2145:60:114;;;;;;;;;;;2256:34;;;;;;;;;;;-1:-1:-1;;;2256:34:114;;;;;;:14;:34::i;:::-;2234:18;2215:75;2216:16;2215:75;;-1:-1:-1;;;;;;2215:75:114;-1:-1:-1;;;;;2215:75:114;;;;;;;;;;2311:20;;;;;;;;;;;;-1:-1:-1;;;2311:20:114;;;;;;:8;:20::i;:::-;2300:8;:31;;-1:-1:-1;;;;;;2300:31:114;-1:-1:-1;;;;;2300:31:114;;;;;;;;;;192:2146::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;8142:51:120;;;-1:-1:-1;;;8209:18:120;;;8202:34;2196:43:20;;;;;;;;;8115:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;350:121:82:-;433:22;;:30;;;-1:-1:-1;;;433:30:82;;;;405:59;;-1:-1:-1;;;;;433:22:82;;:28;;:30;;;;;;;;;;;;;;:22;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;416:47:82;424:4;-1:-1:-1;;;;;416:47:82;;405:10;:59::i;:::-;350:121::o;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;9906:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;9879:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;16415:125::-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;3262:157:20:-;3322:9;3317:96;;3352:30;;;;;10466:2:120;10448:21;;;10505:2;10485:18;;;10478:30;10544:25;10539:2;10524:18;;10517:53;10602:2;10587:18;;10264:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;:::-;3262:157;:::o;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;10818:51:120;;;-1:-1:-1;;;10885:18:120;;;10878:34;;;;2712:4:20;10928:18:120;;;10921:34;2489:11:20;;1671:64;2586:43;;10791:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;-1:-1:-1;;2499:1:120;2481:16;;2474:27;2251:258::o;2514:::-;2556:3;2594:5;2588:12;2621:6;2616:3;2609:19;2637:63;2693:6;2686:4;2681:3;2677:14;2670:4;2663:5;2659:16;2637:63;:::i;:::-;2754:2;2733:15;-1:-1:-1;;2729:29:120;2720:39;;;;2761:4;2716:50;;2514:258;-1:-1:-1;;2514:258:120:o;2777:803::-;2939:4;2968:2;3008;2997:9;2993:18;3038:2;3027:9;3020:21;3061:6;3096;3090:13;3127:6;3119;3112:22;3165:2;3154:9;3150:18;3143:25;;3227:2;3217:6;3214:1;3210:14;3199:9;3195:30;3191:39;3177:53;;3265:2;3257:6;3253:15;3286:1;3296:255;3310:6;3307:1;3304:13;3296:255;;;3403:2;3399:7;3387:9;3379:6;3375:22;3371:36;3366:3;3359:49;3431:40;3464:6;3455;3449:13;3431:40;:::i;:::-;3421:50;-1:-1:-1;3529:12:120;;;;3494:15;;;;3332:1;3325:9;3296:255;;;-1:-1:-1;3568:6:120;;2777:803;-1:-1:-1;;;;;;;2777:803:120:o;5971:1325::-;6310:2;6299:9;6292:21;6273:4;6336:49;6381:2;6370:9;6366:18;5884:2;5872:15;;-1:-1:-1;;;5912:4:120;5903:14;;5896:36;5957:2;5948:12;;5807:159;6336:49;6433:9;6425:6;6421:22;6416:2;6405:9;6401:18;6394:50;6468:3;6460:6;6453:19;6505:66;6500:2;6492:6;6488:15;6481:91;6605:66;6600:2;6592:6;6588:15;6581:91;6705:66;6700:2;6692:6;6688:15;6681:91;6806:66;6800:3;6792:6;6788:16;6781:92;6907:66;6901:3;6893:6;6889:16;6882:92;7008:66;7002:3;6994:6;6990:16;6983:92;7109:66;7103:3;7095:6;7091:16;7084:92;-1:-1:-1;;;7204:3:120;7196:6;7192:16;7185:29;7243:3;7235:6;7231:16;7223:24;;;7283:6;7278:2;7267:9;7263:18;7256:34;5971:1325;;;;:::o;7301:277::-;7503:2;7492:9;7485:21;7466:4;7523:49;7568:2;7557:9;7553:18;5884:2;5872:15;;-1:-1:-1;;;5912:4:120;5903:14;;5896:36;5957:2;5948:12;;5807:159;7523:49;7515:57;7301:277;-1:-1:-1;;7301:277:120:o;7583:380::-;7662:1;7658:12;;;;7705;;;7726:61;;7780:4;7772:6;7768:17;7758:27;;7726:61;7833:2;7825:6;7822:14;7802:18;7799:38;7796:161;;;7879:10;7874:3;7870:20;7867:1;7860:31;7914:4;7911:1;7904:15;7942:4;7939:1;7932:15;7796:161;;7583:380;;;:::o;8247:371::-;-1:-1:-1;;;;;;8432:33:120;;8420:46;;8489:13;;8402:3;;8511:61;8489:13;8561:1;8552:11;;8545:4;8533:17;;8511:61;:::i;:::-;8592:16;;;;8610:1;8588:24;;8247:371;-1:-1:-1;;;8247:371:120:o;8623:274::-;8752:3;8790:6;8784:13;8806:53;8852:6;8847:3;8840:4;8832:6;8828:17;8806:53;:::i;:::-;8875:16;;;;;8623:274;-1:-1:-1;;8623:274:120:o;8902:277::-;8969:6;9022:2;9010:9;9001:7;8997:23;8993:32;8990:52;;;9038:1;9035;9028:12;8990:52;9070:9;9064:16;9123:5;9116:13;9109:21;9102:5;9099:32;9089:60;;9145:1;9142;9135:12;9089:60;9168:5;8902:277;-1:-1:-1;;;8902:277:120:o;9184:290::-;9254:6;9307:2;9295:9;9286:7;9282:23;9278:32;9275:52;;;9323:1;9320;9313:12;9275:52;9349:16;;-1:-1:-1;;;;;9394:31:120;;9384:42;;9374:70;;9440:1;9437;9430:12;9942:317;-1:-1:-1;;;;;10119:32:120;;10101:51;;10188:2;10183;10168:18;;10161:30;;;-1:-1:-1;;10208:45:120;;10234:18;;10226:6;10208:45;:::i;:::-;10200:53;9942:317;-1:-1:-1;;;;9942:317:120:o","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","test_OwnerIsOwnerByDefault()":"ec480e4d","test_RandomAccountCannotTransferOwnership()":"0948888a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"test_OwnerIsOwnerByDefault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RandomAccountCannotTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Ownership.t.sol\":\"OwnershipClientTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/Ownership.t.sol\":{\"keccak256\":\"0xff4a5ec9284d21a9e82df4e35ae70a13a7b64e87ba4c790df1da32fc3949b1f6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://66c1bf18a0b81aed14eac94ea5b838656cae2d4e1517dd62313d3936adc53097\",\"dweb:/ipfs/Qmf2xR65wDEXG1U9PvNNgDazG1Z7Nk1LhWyAXuiHkCU4ek\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/ServiceManagerSetup.sol\":{\"keccak256\":\"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c\",\"dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"test_OwnerIsOwnerByDefault"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RandomAccountCannotTransferOwnership"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Ownership.t.sol":"OwnershipClientTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/Ownership.t.sol":{"keccak256":"0xff4a5ec9284d21a9e82df4e35ae70a13a7b64e87ba4c790df1da32fc3949b1f6","urls":["bzz-raw://66c1bf18a0b81aed14eac94ea5b838656cae2d4e1517dd62313d3936adc53097","dweb:/ipfs/Qmf2xR65wDEXG1U9PvNNgDazG1Z7Nk1LhWyAXuiHkCU4ek"],"license":"GPL-3.0-or-later"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/ServiceManagerSetup.sol":{"keccak256":"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2","urls":["bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c","dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":82} \ No newline at end of file diff --git a/out/Ownership.t.sol/OwnershipServiceManagerTest.json b/out/Ownership.t.sol/OwnershipServiceManagerTest.json new file mode 100644 index 00000000..fe8de28b --- /dev/null +++ b/out/Ownership.t.sol/OwnershipServiceManagerTest.json @@ -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":"test_OwnerIsChangedDuringSetup","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_OwnerIsUninitializedFromConstructor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_RandomAccountCannotTransferOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b61d3a080620006516000396000f3fe60806040523480156200001157600080fd5b5060043610620000fd5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa9146200019e578063ba414fa614620001a8578063e20c9f7114620001c3578063fa7626d414620001cd57600080fd5b806366d9a9a0146200016257806385226c81146200017b578063916a17c6146200019457600080fd5b80631ed7831c11620000d85780631ed7831c14620001225780633897fe9114620001445780633e5e3c23146200014e5780633f7286f4146200015857600080fd5b80630948888a14620001025780630a04cf32146200010e5780630a9254e41462000118575b600080fd5b6200010c620001db565b005b6200010c6200031c565b6200010c620003b1565b6200012c62000c7c565b6040516200013b9190620016ab565b60405180910390f35b6200010c62000ce0565b6200012c62000d92565b6200012c62000df4565b6200016c62000e56565b6040516200013b9190620016fa565b6200018562000f49565b6040516200013b91906200180e565b6200016c62001023565b620001856200110d565b620001b2620011e7565b60405190151581526020016200013b565b6200012c6200131c565b600054620001b29060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200023a57600080fd5b505af11580156200024f573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620002a157600080fd5b505af1158015620002b6573d6000803e3d6000fd5b505060265460405163f2fde38b60e01b8152602160048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200030157600080fd5b505af115801562000316573d6000803e3d6000fd5b50505050565b601f5460408051638da5cb5b60e01b815290516001600160a01b0390921691620003ae918391638da5cb5b916004808201926020929091908290030181865afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062001874565b6001600160a01b0316306001600160a01b0316146200137e565b50565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200040b57600080fd5b505af115801562000420573d6000803e3d6000fd5b5050505060405162000432906200163c565b604051809103906000f0801580156200044f573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200047e9062001649565b604051809103906000f0801580156200049b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620004cc9062001657565b6001600160a01b039091168152602001604051809103906000f080158015620004f9573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620005389062001665565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000575573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620005aa9062001673565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620005de573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200064e57600080fd5b505af115801562000663573d6000803e3d6000fd5b50505050604051620006759062001681565b604051809103906000f08015801562000692573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620006c39062001657565b6001600160a01b039091168152602001604051809103906000f080158015620006f0573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200071f906200168f565b604051809103906000f0801580156200073c573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620007719062001673565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007a5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200082e57600080fd5b505af115801562000843573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008a657600080fd5b505af1158015620008bb573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200090c57600080fd5b505af115801562000921573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200095890600190600401620018a6565b600060405180830381600087803b1580156200097357600080fd5b505af115801562000988573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620009eb57600080fd5b505af115801562000a00573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000a2191506200169d565b6001600160a01b039091168152602001604051809103906000f08015801562000a4e573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000a8f9060040162001a06565b600060405180830381600087803b15801562000aaa57600080fd5b505af115801562000abf573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000b1290620013f6565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000b6790620013f6565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000bb790620013f6565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000c0d90620013f6565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000c5a9062001515565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000cd657602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000cb7575b5050505050905090565b600060405162000cf0906200168f565b604051809103906000f08015801562000d0d573d6000803e3d6000fd5b509050600081905062000d8e816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d7e919062001874565b6001600160a01b0316156200137e565b5050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000cd6576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000cb7575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000cd6576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000cb7575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000f405760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f2757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000ee85790505b5050505050815250508152602001906001019062000e7a565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000f4057838290600052602060002001805462000f8f9062001a37565b80601f016020809104026020016040519081016040528092919081815260200182805462000fbd9062001a37565b80156200100e5780601f1062000fe2576101008083540402835291602001916200100e565b820191906000526020600020905b81548152906001019060200180831162000ff057829003601f168201915b50505050508152602001906001019062000f6d565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000f405760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010f457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010b55790505b5050505050815250508152602001906001019062001047565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000f40578382906000526020600020018054620011539062001a37565b80601f0160208091040260200160405190810160405280929190818152602001828054620011819062001a37565b8015620011d25780601f10620011a657610100808354040283529160200191620011d2565b820191906000526020600020905b815481529060010190602001808311620011b457829003601f168201915b50505050508152602001906001019062001131565b60008054610100900460ff1615620012085750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620013175760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001299917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001a74565b60408051601f1981840301815290829052620012b59162001aa7565b6000604051808303816000865af19150503d8060008114620012f4576040519150601f19603f3d011682016040523d82523d6000602084013e620012f9565b606091505b509150508080602001905181019062001313919062001ac5565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000cd6576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000cb7575050505050905090565b80620003ae577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620013e49060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620003ae62001529565b600080826040516020016200140c919062001aa7565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001478573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149e919062001874565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620014dc908590879060040162001ae9565b600060405180830381600087803b158015620014f757600080fd5b505af11580156200150c573d6000803e3d6000fd5b50505050915091565b60006200152282620013f6565b5092915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200162b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620015c6929160200162001a74565b60408051601f1981840301815290829052620015e29162001aa7565b6000604051808303816000865af19150503d806000811462001621576040519150601f19603f3d011682016040523d82523d6000602084013e62001626565b606091505b505050505b6000805461ff001916610100179055565b60df8062001b1883390190565b6101798062001bf783390190565b6107678062001d7083390190565b615f0280620024d783390190565b610deb80620083d983390190565b61017880620091c483390190565b613799806200933c83390190565b610896806200cad583390190565b6020808252825182820181905260009190848201906040850190845b81811015620016ee5783516001600160a01b031683529284019291840191600101620016c7565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620017a257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200178c5783516001600160e01b0319168252928b019260019290920191908b019062001760565b50978a0197955050509187019160010162001722565b50919998505050505050505050565b60005b83811015620017ce578181015183820152602001620017b4565b83811115620003165750506000910152565b60008151808452620017fa816020860160208601620017b1565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200186757603f1988860301845262001854858351620017e0565b9450928501929085019060010162001835565b5092979650505050505050565b6000602082840312156200188757600080fd5b81516001600160a01b03811681146200189f57600080fd5b9392505050565b606081526000620018d160608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062001a3160208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c9082168062001a4c57607f821691505b6020821081141562001a6e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001a99816004850160208701620017b1565b919091016004019392505050565b6000825162001abb818460208701620017b1565b9190910192915050565b60006020828403121562001ad857600080fd5b815180151581146200189f57600080fd5b6001600160a01b038316815260406020820181905260009062001b0f90830184620017e0565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033a2646970667358221220bf596484dab805253ea4179d383f05c1261f9d9219fd85c4010306a94c0c3a5c64736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;669:705:82;2329:22:116;;669:705:82;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;669:705:82;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;669:705:82:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;669:705:82;;;-1:-1:-1;669:705:82;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;669:705:82;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000fd5760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa9146200019e578063ba414fa614620001a8578063e20c9f7114620001c3578063fa7626d414620001cd57600080fd5b806366d9a9a0146200016257806385226c81146200017b578063916a17c6146200019457600080fd5b80631ed7831c11620000d85780631ed7831c14620001225780633897fe9114620001445780633e5e3c23146200014e5780633f7286f4146200015857600080fd5b80630948888a14620001025780630a04cf32146200010e5780630a9254e41462000118575b600080fd5b6200010c620001db565b005b6200010c6200031c565b6200010c620003b1565b6200012c62000c7c565b6040516200013b9190620016ab565b60405180910390f35b6200010c62000ce0565b6200012c62000d92565b6200012c62000df4565b6200016c62000e56565b6040516200013b9190620016fa565b6200018562000f49565b6040516200013b91906200180e565b6200016c62001023565b620001856200110d565b620001b2620011e7565b60405190151581526020016200013b565b6200012c6200131c565b600054620001b29060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200023a57600080fd5b505af11580156200024f573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620002a157600080fd5b505af1158015620002b6573d6000803e3d6000fd5b505060265460405163f2fde38b60e01b8152602160048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b1580156200030157600080fd5b505af115801562000316573d6000803e3d6000fd5b50505050565b601f5460408051638da5cb5b60e01b815290516001600160a01b0390921691620003ae918391638da5cb5b916004808201926020929091908290030181865afa1580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062001874565b6001600160a01b0316306001600160a01b0316146200137e565b50565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200040b57600080fd5b505af115801562000420573d6000803e3d6000fd5b5050505060405162000432906200163c565b604051809103906000f0801580156200044f573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200047e9062001649565b604051809103906000f0801580156200049b573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620004cc9062001657565b6001600160a01b039091168152602001604051809103906000f080158015620004f9573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620005389062001665565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000575573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620005aa9062001673565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620005de573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200064e57600080fd5b505af115801562000663573d6000803e3d6000fd5b50505050604051620006759062001681565b604051809103906000f08015801562000692573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620006c39062001657565b6001600160a01b039091168152602001604051809103906000f080158015620006f0573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200071f906200168f565b604051809103906000f0801580156200073c573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620007719062001673565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620007a5573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200082e57600080fd5b505af115801562000843573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008a657600080fd5b505af1158015620008bb573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200090c57600080fd5b505af115801562000921573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200095890600190600401620018a6565b600060405180830381600087803b1580156200097357600080fd5b505af115801562000988573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620009eb57600080fd5b505af115801562000a00573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000a2191506200169d565b6001600160a01b039091168152602001604051809103906000f08015801562000a4e573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000a8f9060040162001a06565b600060405180830381600087803b15801562000aaa57600080fd5b505af115801562000abf573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000b1290620013f6565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000b6790620013f6565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000bb790620013f6565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000c0d90620013f6565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000c5a9062001515565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000cd657602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000cb7575b5050505050905090565b600060405162000cf0906200168f565b604051809103906000f08015801562000d0d573d6000803e3d6000fd5b509050600081905062000d8e816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d7e919062001874565b6001600160a01b0316156200137e565b5050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000cd6576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000cb7575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000cd6576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000cb7575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000f405760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f2757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000ee85790505b5050505050815250508152602001906001019062000e7a565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000f4057838290600052602060002001805462000f8f9062001a37565b80601f016020809104026020016040519081016040528092919081815260200182805462000fbd9062001a37565b80156200100e5780601f1062000fe2576101008083540402835291602001916200100e565b820191906000526020600020905b81548152906001019060200180831162000ff057829003601f168201915b50505050508152602001906001019062000f6d565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000f405760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010f457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010b55790505b5050505050815250508152602001906001019062001047565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000f40578382906000526020600020018054620011539062001a37565b80601f0160208091040260200160405190810160405280929190818152602001828054620011819062001a37565b8015620011d25780601f10620011a657610100808354040283529160200191620011d2565b820191906000526020600020905b815481529060010190602001808311620011b457829003601f168201915b50505050508152602001906001019062001131565b60008054610100900460ff1615620012085750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620013175760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001299917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001a74565b60408051601f1981840301815290829052620012b59162001aa7565b6000604051808303816000865af19150503d8060008114620012f4576040519150601f19603f3d011682016040523d82523d6000602084013e620012f9565b606091505b509150508080602001905181019062001313919062001ac5565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000cd6576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000cb7575050505050905090565b80620003ae577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620013e49060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a1620003ae62001529565b600080826040516020016200140c919062001aa7565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001478573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149e919062001874565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620014dc908590879060040162001ae9565b600060405180830381600087803b158015620014f757600080fd5b505af11580156200150c573d6000803e3d6000fd5b50505050915091565b60006200152282620013f6565b5092915050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200162b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620015c6929160200162001a74565b60408051601f1981840301815290829052620015e29162001aa7565b6000604051808303816000865af19150503d806000811462001621576040519150601f19603f3d011682016040523d82523d6000602084013e62001626565b606091505b505050505b6000805461ff001916610100179055565b60df8062001b1883390190565b6101798062001bf783390190565b6107678062001d7083390190565b615f0280620024d783390190565b610deb80620083d983390190565b61017880620091c483390190565b613799806200933c83390190565b610896806200cad583390190565b6020808252825182820181905260009190848201906040850190845b81811015620016ee5783516001600160a01b031683529284019291840191600101620016c7565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620017a257898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200178c5783516001600160e01b0319168252928b019260019290920191908b019062001760565b50978a0197955050509187019160010162001722565b50919998505050505050505050565b60005b83811015620017ce578181015183820152602001620017b4565b83811115620003165750506000910152565b60008151808452620017fa816020860160208601620017b1565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200186757603f1988860301845262001854858351620017e0565b9450928501929085019060010162001835565b5092979650505050505050565b6000602082840312156200188757600080fd5b81516001600160a01b03811681146200189f57600080fd5b9392505050565b606081526000620018d160608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062001a3160208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c9082168062001a4c57607f821691505b6020821081141562001a6e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009062001a99816004850160208701620017b1565b919091016004019392505050565b6000825162001abb818460208701620017b1565b9190910192915050565b60006020828403121562001ad857600080fd5b815180151581146200189f57600080fd5b6001600160a01b038316815260406020820181905260009062001b0f90830184620017e0565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033a2646970667358221220bf596484dab805253ea4179d383f05c1261f9d9219fd85c4010306a94c0c3a5c64736f6c634300080c0033","sourceMap":"669:705:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1176:196;;;:::i;:::-;;996:174;;;:::i;192:2146:114:-;;;:::i;2161:134:26:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;735:255:82;;;:::i;2930:133:26:-;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3750:14:120;;3743:22;3725:41;;3713:2;3698:18;1819:584:20;3585:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;1176:196:82;317:28:21;309:37;;-1:-1:-1;;;;;1246:15:82;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1273:21:82;;-1:-1:-1;;;1273:21:82;;1290:2;1273:21;;;3923:51:120;1273:8:82;;-1:-1:-1;1273:8:82;;-1:-1:-1;3896:18:120;;1273:21:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1304:30:82;;:61;;-1:-1:-1;;;1304:61:82;;1361:2;1304:61;;;3923:51:120;-1:-1:-1;;;;;1304:30:82;;;;-1:-1:-1;1304:48:82;;-1:-1:-1;3896:18:120;;1304:61:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1176:196::o;996:174::-;1091:14;;1145:17;;;-1:-1:-1;;;1145:17:82;;;;-1:-1:-1;;;;;1091:14:82;;;;1117:46;;1091:14;;1145:15;;:17;;;;;;;;;;;;;;;1091:14;1145:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1128:34:82;1136:4;-1:-1:-1;;;;;1128:34:82;;1117:10;:46::i;:::-;1045:125;996:174::o;192:2146:114:-;240:5;;226:20;;-1:-1:-1;;;226:20:114;;-1:-1:-1;;;;;240:5:114;;;226:20;;;3923:51:120;226:13:114;;;;3896:18:120;;226:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;256:15:114;:43;;-1:-1:-1;;;;;;256:43:114;-1:-1:-1;;;;;256:43:114;;;;;;;;;;327:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;309:15:114;:43;;-1:-1:-1;;;;;;309:43:114;-1:-1:-1;;;;;309:43:114;;;;;;407:5;;388:25;;407:5;;;388:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;388:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;363:22:114;:50;;-1:-1:-1;;;;;;363:50:114;-1:-1:-1;;;;;363:50:114;;;;;;503:15;;521:7;;538:15;;469:86;;503:15;;;;521:7;;;;538:15;;;469:86;;;:::i;:::-;-1:-1:-1;;;;;4538:15:120;;;4520:34;;4590:15;;;4585:2;4570:18;;4563:43;4642:15;;;4637:2;4622:18;;4615:43;4470:2;4455:18;469:86:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:31:114;:132;;-1:-1:-1;;;;;;423:132:114;-1:-1:-1;;;;;423:132:114;;;;;;;;;692:22;;628:88;;423:132;;692:22;;628:88;;;:::i;:::-;-1:-1:-1;;;;;4899:15:120;;;4881:34;;4951:15;;4946:2;4931:18;;4924:43;4831:2;4816:18;628:88:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:17:114;:162;;-1:-1:-1;;;;;;565:162:114;-1:-1:-1;;;;;565:162:114;;;;;;;;;797:14;;737:82;;-1:-1:-1;;;737:82:114;;774:4;737:82;;;5288:34:120;797:14:114;;5338:18:120;;;5331:43;-1:-1:-1;5390:18:120;;;5383:34;;;5433:18;;;5426:34;565:162:114;737:28;;5222:19:120;;737:82:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;830:13:114;:39;;-1:-1:-1;;;;;;830:39:114;-1:-1:-1;;;;;830:39:114;;;;;;920:5;;901:25;;920:5;;;901:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;901:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;879:19:114;:47;;-1:-1:-1;;;;;;879:47:114;-1:-1:-1;;;;;879:47:114;;;;;;;;;;967:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;936:28:114;:51;;-1:-1:-1;;;;;;936:51:114;-1:-1:-1;;;;;936:51:114;;;;;;;;;1110:19;;1049:82;;936:51;;1110:19;;1049:82;;;:::i;:::-;-1:-1:-1;;;;;4899:15:120;;;4881:34;;4951:15;;4946:2;4931:18;;4924:43;4831:2;4816:18;1049:82:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;997:14:114;:136;;-1:-1:-1;;;;;;997:136:114;-1:-1:-1;;;;;997:136:114;;;;;;;;;1209:10;;1241:17;;1281:13;;1143:263;;-1:-1:-1;;;1143:263:114;;1190:4;1143:263;;;5804:34:120;1209:10:114;;;5854:18:120;;;5847:43;1241:17:114;;;5906:18:120;;;5899:43;;;1281:13:114;;5958:18:120;;;5951:43;6010:19;;;6003:44;;;;-1:-1:-1;6063:19:120;;;6056:35;997:136:114;1143:25;;5738:19:120;;1143:263:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1416:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1441:28:114;;-1:-1:-1;;;1441:28:114;;1463:4;1441:28;;;3923:51:120;1441:13:114;;-1:-1:-1;1441:13:114;;-1:-1:-1;3896:18:120;;1441:28:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1479:14:114;;:319;;-1:-1:-1;;;1479:319:114;;-1:-1:-1;;;;;1479:14:114;;;;-1:-1:-1;1479:27:114;;-1:-1:-1;1479:319:114;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1808:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1865:14:114;;1842:39;;-1:-1:-1;;;;;1865:14:114;;;;-1:-1:-1;1842:39:114;;-1:-1:-1;1842:39:114;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;1842:39:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1833:6:114;:48;;-1:-1:-1;;;;;;1833:48:114;-1:-1:-1;;;;;1833:48:114;;;;;;;;;1891:30;;-1:-1:-1;;;1891:30:114;;:16;;:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1972:6:114;;1931:22;:49;;-1:-1:-1;;;;;;1931:49:114;-1:-1:-1;;;;;1972:6:114;;;1931:49;;;;;;-1:-1:-1;;2021:29:114;;;;;;;;;;;;-1:-1:-1;;;2021:29:114;;;;;;:14;:29::i;:::-;2004:13;1990:60;1991:11;1990:60;;-1:-1:-1;;;;;;1990:60:114;-1:-1:-1;;;;;1990:60:114;;;;;;;;;;2101:34;;;;;;;;;;;;-1:-1:-1;;;2101:34:114;;;;;;:14;:34::i;:::-;2079:18;2060:75;2061:16;2060:75;;-1:-1:-1;;;;;;2060:75:114;-1:-1:-1;;;;;2060:75:114;;;;;;;;;;2176:29;;;;;;;;;;;;-1:-1:-1;;;2176:29:114;;;;;;:14;:29::i;:::-;2159:13;2145:60;;;2146:11;2145:60;;-1:-1:-1;;;;;;2145:60:114;-1:-1:-1;;;;;2145:60:114;;;;;;;;;;;2256:34;;;;;;;;;;;-1:-1:-1;;;2256:34:114;;;;;;:14;:34::i;:::-;2234:18;2215:75;2216:16;2215:75;;-1:-1:-1;;;;;;2215:75:114;-1:-1:-1;;;;;2215:75:114;;;;;;;;;;2311:20;;;;;;;;;;;;-1:-1:-1;;;2311:20:114;;;;;;:8;:20::i;:::-;2300:8;:31;;-1:-1:-1;;;;;;2300:31:114;-1:-1:-1;;;;;2300:31:114;;;;;;;;;;192:2146::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;735:255:82:-;804:35;842:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;804:58;;872:17;908:20;872:58;;940:43;965:9;-1:-1:-1;;;;;965:15:82;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;951:31:82;;940:10;:43::i;:::-;794:196;;735:255::o;2930:133:26:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;8437:51:120;;;-1:-1:-1;;;8504:18:120;;;8497:34;2196:43:20;;;;;;;;;8410:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3262:157:20:-;3322:9;3317:96;;3352:30;;;;;9681:2:120;9663:21;;;9720:2;9700:18;;;9693:30;9759:25;9754:2;9739:18;;9732:53;9817:2;9802:18;;9479:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;10258:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;10231:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;16415:125::-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;2409:432:20:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;10818:51:120;;;-1:-1:-1;;;10885:18:120;;;10878:34;;;;2712:4:20;10928:18:120;;;10921:34;2489:11:20;;1671:64;2586:43;;10791:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;-1:-1:-1;;2499:1:120;2481:16;;2474:27;2251:258::o;2514:::-;2556:3;2594:5;2588:12;2621:6;2616:3;2609:19;2637:63;2693:6;2686:4;2681:3;2677:14;2670:4;2663:5;2659:16;2637:63;:::i;:::-;2754:2;2733:15;-1:-1:-1;;2729:29:120;2720:39;;;;2761:4;2716:50;;2514:258;-1:-1:-1;;2514:258:120:o;2777:803::-;2939:4;2968:2;3008;2997:9;2993:18;3038:2;3027:9;3020:21;3061:6;3096;3090:13;3127:6;3119;3112:22;3165:2;3154:9;3150:18;3143:25;;3227:2;3217:6;3214:1;3210:14;3199:9;3195:30;3191:39;3177:53;;3265:2;3257:6;3253:15;3286:1;3296:255;3310:6;3307:1;3304:13;3296:255;;;3403:2;3399:7;3387:9;3379:6;3375:22;3371:36;3366:3;3359:49;3431:40;3464:6;3455;3449:13;3431:40;:::i;:::-;3421:50;-1:-1:-1;3529:12:120;;;;3494:15;;;;3332:1;3325:9;3296:255;;;-1:-1:-1;3568:6:120;;2777:803;-1:-1:-1;;;;;;;2777:803:120:o;3985:290::-;4055:6;4108:2;4096:9;4087:7;4083:23;4079:32;4076:52;;;4124:1;4121;4114:12;4076:52;4150:16;;-1:-1:-1;;;;;4195:31:120;;4185:42;;4175:70;;4241:1;4238;4231:12;4175:70;4264:5;3985:290;-1:-1:-1;;;3985:290:120:o;6266:1325::-;6605:2;6594:9;6587:21;6568:4;6631:49;6676:2;6665:9;6661:18;6179:2;6167:15;;-1:-1:-1;;;6207:4:120;6198:14;;6191:36;6252:2;6243:12;;6102:159;6631:49;6728:9;6720:6;6716:22;6711:2;6700:9;6696:18;6689:50;6763:3;6755:6;6748:19;6800:66;6795:2;6787:6;6783:15;6776:91;6900:66;6895:2;6887:6;6883:15;6876:91;7000:66;6995:2;6987:6;6983:15;6976:91;7101:66;7095:3;7087:6;7083:16;7076:92;7202:66;7196:3;7188:6;7184:16;7177:92;7303:66;7297:3;7289:6;7285:16;7278:92;7404:66;7398:3;7390:6;7386:16;7379:92;-1:-1:-1;;;7499:3:120;7491:6;7487:16;7480:29;7538:3;7530:6;7526:16;7518:24;;;7578:6;7573:2;7562:9;7558:18;7551:34;6266:1325;;;;:::o;7596:277::-;7798:2;7787:9;7780:21;7761:4;7818:49;7863:2;7852:9;7848:18;6179:2;6167:15;;-1:-1:-1;;;6207:4:120;6198:14;;6191:36;6252:2;6243:12;;6102:159;7818:49;7810:57;7596:277;-1:-1:-1;;7596:277:120:o;7878:380::-;7957:1;7953:12;;;;8000;;;8021:61;;8075:4;8067:6;8063:17;8053:27;;8021:61;8128:2;8120:6;8117:14;8097:18;8094:38;8091:161;;;8174:10;8169:3;8165:20;8162:1;8155:31;8209:4;8206:1;8199:15;8237:4;8234:1;8227:15;8091:161;;7878:380;;;:::o;8542:371::-;-1:-1:-1;;;;;;8727:33:120;;8715:46;;8784:13;;8697:3;;8806:61;8784:13;8856:1;8847:11;;8840:4;8828:17;;8806:61;:::i;:::-;8887:16;;;;8905:1;8883:24;;8542:371;-1:-1:-1;;;8542:371:120:o;8918:274::-;9047:3;9085:6;9079:13;9101:53;9147:6;9142:3;9135:4;9127:6;9123:17;9101:53;:::i;:::-;9170:16;;;;;8918:274;-1:-1:-1;;8918:274:120:o;9197:277::-;9264:6;9317:2;9305:9;9296:7;9292:23;9288:32;9285:52;;;9333:1;9330;9323:12;9285:52;9365:9;9359:16;9418:5;9411:13;9404:21;9397:5;9394:32;9384:60;;9440:1;9437;9430:12;10294:317;-1:-1:-1;;;;;10471:32:120;;10453:51;;10540:2;10535;10520:18;;10513:30;;;-1:-1:-1;;10560:45:120;;10586:18;;10578:6;10560:45;:::i;:::-;10552:53;10294:317;-1:-1:-1;;;;10294:317:120:o","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","test_OwnerIsChangedDuringSetup()":"0a04cf32","test_OwnerIsUninitializedFromConstructor()":"3897fe91","test_RandomAccountCannotTransferOwnership()":"0948888a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"test_OwnerIsChangedDuringSetup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_OwnerIsUninitializedFromConstructor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_RandomAccountCannotTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/Ownership.t.sol\":\"OwnershipServiceManagerTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/Ownership.t.sol\":{\"keccak256\":\"0xff4a5ec9284d21a9e82df4e35ae70a13a7b64e87ba4c790df1da32fc3949b1f6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://66c1bf18a0b81aed14eac94ea5b838656cae2d4e1517dd62313d3936adc53097\",\"dweb:/ipfs/Qmf2xR65wDEXG1U9PvNNgDazG1Z7Nk1LhWyAXuiHkCU4ek\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/ServiceManagerSetup.sol\":{\"keccak256\":\"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c\",\"dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"test_OwnerIsChangedDuringSetup"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_OwnerIsUninitializedFromConstructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_RandomAccountCannotTransferOwnership"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/Ownership.t.sol":"OwnershipServiceManagerTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/Ownership.t.sol":{"keccak256":"0xff4a5ec9284d21a9e82df4e35ae70a13a7b64e87ba4c790df1da32fc3949b1f6","urls":["bzz-raw://66c1bf18a0b81aed14eac94ea5b838656cae2d4e1517dd62313d3936adc53097","dweb:/ipfs/Qmf2xR65wDEXG1U9PvNNgDazG1Z7Nk1LhWyAXuiHkCU4ek"],"license":"GPL-3.0-or-later"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/ServiceManagerSetup.sol":{"keccak256":"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2","urls":["bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c","dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":82} \ No newline at end of file diff --git a/out/Pausable.sol/Pausable.json b/out/Pausable.sol/Pausable.json new file mode 100644 index 00000000..e5eb5cac --- /dev/null +++ b/out/Pausable.sol/Pausable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b506107cd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80635c975abb1161005b5780635c975abb146100f1578063886f119514610102578063f8a8fd6d146100a0578063fabc1cbc1461012d57600080fd5b806310d67a2f1461008d578063136439dd146100a2578063595c6a67146100b55780635ac86ab7146100bd575b600080fd5b6100a061009b366004610666565b610140565b005b6100a06100b036600461068a565b6101fa565b6100a0610339565b6100dc6100cb3660046106a3565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100e8565b600054610115906001600160a01b031681565b6040516001600160a01b0390911681526020016100e8565b6100a061013b36600461068a565b610400565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b591906106c6565b6001600160a01b0316336001600160a01b0316146101ee5760405162461bcd60e51b81526004016101e5906106e3565b60405180910390fd5b6101f78161055a565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610266919061072d565b6102825760405162461bcd60e51b81526004016101e59061074f565b600154818116146102fb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101e5565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a5919061072d565b6103c15760405162461bcd60e51b81526004016101e59061074f565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047591906106c6565b6001600160a01b0316336001600160a01b0316146104a55760405162461bcd60e51b81526004016101e5906106e3565b6001541981196001541916146105235760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101e5565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161032e565b6001600160a01b0381166105e85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101e5565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101f757600080fd5b60006020828403121561067857600080fd5b813561068381610651565b9392505050565b60006020828403121561069c57600080fd5b5035919050565b6000602082840312156106b557600080fd5b813560ff8116811461068357600080fd5b6000602082840312156106d857600080fd5b815161068381610651565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073f57600080fd5b8151801515811461068357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220b0a5997d7c65b94422d3e796d8f9cf1c53f729ae6a8ac56f2993bc7b42936f7b64736f6c634300080c0033","sourceMap":"1655:5201:101:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c80635c975abb1161005b5780635c975abb146100f1578063886f119514610102578063f8a8fd6d146100a0578063fabc1cbc1461012d57600080fd5b806310d67a2f1461008d578063136439dd146100a2578063595c6a67146100b55780635ac86ab7146100bd575b600080fd5b6100a061009b366004610666565b610140565b005b6100a06100b036600461068a565b6101fa565b6100a0610339565b6100dc6100cb3660046106a3565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100e8565b600054610115906001600160a01b031681565b6040516001600160a01b0390911681526020016100e8565b6100a061013b36600461068a565b610400565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b591906106c6565b6001600160a01b0316336001600160a01b0316146101ee5760405162461bcd60e51b81526004016101e5906106e3565b60405180910390fd5b6101f78161055a565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610266919061072d565b6102825760405162461bcd60e51b81526004016101e59061074f565b600154818116146102fb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101e5565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a5919061072d565b6103c15760405162461bcd60e51b81526004016101e59061074f565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047591906106c6565b6001600160a01b0316336001600160a01b0316146104a55760405162461bcd60e51b81526004016101e5906106e3565b6001541981196001541916146105235760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101e5565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161032e565b6001600160a01b0381166105e85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101e5565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101f757600080fd5b60006020828403121561067857600080fd5b813561068381610651565b9392505050565b60006020828403121561069c57600080fd5b5035919050565b6000602082840312156106b557600080fd5b813560ff8116811461068357600080fd5b6000602082840312156106d857600080fd5b815161068381610651565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073f57600080fd5b8151801515811461068357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220b0a5997d7c65b94422d3e796d8f9cf1c53f729ae6a8ac56f2993bc7b42936f7b64736f6c634300080c0033","sourceMap":"1655:5201:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5869:152;;;;;;:::i;:::-;;:::i;:::-;;3845:406;;;;;;:::i;:::-;;:::i;4326:136::-;;;:::i;5635:163::-;;;;;;:::i;:::-;5738:1;5767:7;;5738:10;;;;;5767:14;;;5766:24;;5635:163;;;;1085:14:120;;1078:22;1060:41;;1048:2;1033:18;5635:163:101;;;;;;;;5447:87;5520:7;;5447:87;;1258:25:120;;;1246:2;1231:18;5447:87:101;1112:177:120;1824:37:101;;;;;-1:-1:-1;;;;;1824:37:101;;;;;;-1:-1:-1;;;;;1483:32:120;;;1465:51;;1453:2;1438:18;1824:37:101;1294:228:120;4938:439:101;;;;;;:::i;:::-;;:::i;5869:152::-;2284:14;;;;;;;;-1:-1:-1;;;;;2284:14:101;-1:-1:-1;;;;;2284:23:101;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2270:39:101;:10;-1:-1:-1;;;;;2270:39:101;;2262:94;;;;-1:-1:-1;;;2262:94:101;;;;;;;:::i;:::-;;;;;;;;;5977:37:::1;5996:17;5977:18;:37::i;:::-;5869:152:::0;:::o;3845:406::-;2124:14;;:35;;-1:-1:-1;;;2124:35:101;;2148:10;2124:35;;;1465:51:120;-1:-1:-1;;;;;2124:14:101;;;;:23;;1438:18:120;;2124:35:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:88;;;;-1:-1:-1;;;2116:88:101;;;;;;;:::i;:::-;4091:7:::1;::::0;4061:25;;::::1;4060:38;4052:107;;;::::0;-1:-1:-1;;;4052:107:101;;3312:2:120;4052:107:101::1;::::0;::::1;3294:21:120::0;3351:2;3331:18;;;3324:30;3390:34;3370:18;;;3363:62;3461:26;3441:18;;;3434:54;3505:19;;4052:107:101::1;3110:420:120::0;4052:107:101::1;4169:7;:25:::0;;;4209:35:::1;::::0;1258:25:120;;;4216:10:101::1;::::0;4209:35:::1;::::0;1246:2:120;1231:18;4209:35:101::1;;;;;;;;3845:406:::0;:::o;4326:136::-;2124:14;;:35;;-1:-1:-1;;;2124:35:101;;2148:10;2124:35;;;1465:51:120;-1:-1:-1;;;;;2124:14:101;;;;:23;;1438:18:120;;2124:35:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2116:88;;;;-1:-1:-1;;;2116:88:101;;;;;;;:::i;:::-;-1:-1:-1;;4376:7:101::1;:27:::0;;;4418:37:::1;::::0;1258:25:120;;;4425:10:101::1;::::0;4418:37:::1;::::0;1246:2:120;1231:18;4418:37:101::1;;;;;;;4326:136::o:0;4938:439::-;2284:14;;;;;;;;-1:-1:-1;;;;;2284:14:101;-1:-1:-1;;;;;2284:23:101;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2270:39:101;:10;-1:-1:-1;;;;;2270:39:101;;2262:94;;;;-1:-1:-1;;;2262:94:101;;;;;;;:::i;:::-;5205:7:::1;;5204:8;5182:15;5181:16;5169:7;;5168:8;5167:31;5166:47;5145:138;;;::::0;-1:-1:-1;;;5145:138:101;;3737:2:120;5145:138:101::1;::::0;::::1;3719:21:120::0;3776:2;3756:18;;;3749:30;3815:34;3795:18;;;3788:62;3886:26;3866:18;;;3859:54;3930:19;;5145:138:101::1;3535:420:120::0;5145:138:101::1;5293:7;:25:::0;;;5333:37:::1;::::0;1258:25:120;;;5342:10:101::1;::::0;5333:37:::1;::::0;1246:2:120;1231:18;5333:37:101::1;1112:177:120::0;6081:374:101;-1:-1:-1;;;;;6198:40:101;;6177:160;;;;-1:-1:-1;;;6177:160:101;;4162:2:120;6177:160:101;;;4144:21:120;4201:2;4181:18;;;4174:30;4240:34;4220:18;;;4213:62;4311:34;4291:18;;;4284:62;-1:-1:-1;;;4362:19:120;;;4355:40;4412:19;;6177:160:101;3960:477:120;6177:160:101;6370:14;;6352:52;;;-1:-1:-1;;;;;6370:14:101;;;4704:34:120;;4774:15;;;4769:2;4754:18;;4747:43;6352:52:101;;4639:18:120;6352:52:101;;;;;;;6414:14;:34;;-1:-1:-1;;;;;;6414:34:101;-1:-1:-1;;;;;6414:34:101;;;;;;;;;;6081:374::o;14:148:120:-;-1:-1:-1;;;;;106:31:120;;96:42;;86:70;;152:1;149;142:12;167:289;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;359:9;346:23;378:48;420:5;378:48;:::i;:::-;445:5;167:289;-1:-1:-1;;;167:289:120:o;461:180::-;520:6;573:2;561:9;552:7;548:23;544:32;541:52;;;589:1;586;579:12;541:52;-1:-1:-1;612:23:120;;461:180;-1:-1:-1;461:180:120:o;646:269::-;703:6;756:2;744:9;735:7;731:23;727:32;724:52;;;772:1;769;762:12;724:52;811:9;798:23;861:4;854:5;850:16;843:5;840:27;830:55;;881:1;878;871:12;1527:268;1597:6;1650:2;1638:9;1629:7;1625:23;1621:32;1618:52;;;1666:1;1663;1656:12;1618:52;1698:9;1692:16;1717:48;1759:5;1717:48;:::i;1800:406::-;2002:2;1984:21;;;2041:2;2021:18;;;2014:30;2080:34;2075:2;2060:18;;2053:62;-1:-1:-1;;;2146:2:120;2131:18;;2124:40;2196:3;2181:19;;1800:406::o;2419:277::-;2486:6;2539:2;2527:9;2518:7;2514:23;2510:32;2507:52;;;2555:1;2552;2545:12;2507:52;2587:9;2581:16;2640:5;2633:13;2626:21;2619:5;2616:32;2606:60;;2662:1;2659;2652:12;2701:404;2903:2;2885:21;;;2942:2;2922:18;;;2915:30;2981:34;2976:2;2961:18;;2954:62;-1:-1:-1;;;3047:2:120;3032:18;;3025:38;3095:3;3080:19;;2701:404::o","linkReferences":{}},"methodIdentifiers":{"pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","setPauserRegistry(address)":"10d67a2f","test()":"f8a8fd6d","unpause(uint256)":"fabc1cbc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Pausability is implemented using a uint256, which allows up to 256 different single bit-flags; each bit can potentially pause different functionality. Inspiration for this was taken from the NearBridge design here https://etherscan.io/address/0x3FEFc5A4B1c02f21cBc8D3613643ba0635b9a873#code. For the `pause` and `unpause` functions we've implemented, if you pause, you can only flip (any number of) switches to on/1 (aka \\\"paused\\\"), and if you unpause, you can only flip (any number of) switches to off/0 (aka \\\"paused\\\"). If you want a pauseXYZ function that just flips a single bit / \\\"pausing flag\\\", it will: 1) 'bit-wise and' (aka `&`) a flag with the current paused state (as a uint256) 2) update the paused state to this new valueWe note as well that we have chosen to identify flags by their *bit index* as opposed to their numerical value, so, e.g. defining `DEPOSITS_PAUSED = 3` indicates specifically that if the *third bit* of `_paused` is flipped -- i.e. it is a '1' -- then deposits should be paused\",\"kind\":\"dev\",\"methods\":{\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"},\"_paused\":{\"details\":\"whether or not the contract is currently paused\"}},\"title\":\"Adds pausability to a contract, with pausing & unpausing controlled by the `pauser` and `unpauser` of a PauserRegistry contract.\",\"version\":1},\"userdoc\":{\"events\":{\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceContracts that inherit from this contract may define their own `pause` and `unpause` (and/or related) functions. These functions should be permissioned as \\\"onlyPauser\\\" which defers to a `PauserRegistry` for determining access control.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/eigenlayer/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}}},"version":1},"userdoc":{"kind":"user","methods":{"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/eigenlayer/Pausable.sol":"Pausable"},"evmVersion":"london","libraries":{}},"sources":{"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"}},"version":1},"id":101} \ No newline at end of file diff --git a/out/PoolAddress.sol/PoolAddress.json b/out/PoolAddress.sol/PoolAddress.json new file mode 100644 index 00000000..55a098bf --- /dev/null +++ b/out/PoolAddress.sol/PoolAddress.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122019ad78da0b183c3528e8a3029de4a5241828c76ff85f63443ccbea45f853794364736f6c634300080c0033","sourceMap":"167:1727:69:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;167:1727:69;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122019ad78da0b183c3528e8a3029de4a5241828c76ff85f63443ccbea45f853794364736f6c634300080c0033","sourceMap":"167:1727:69:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Provides functions for deriving a pool address from the factory, tokens, and the fee\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":\"PoolAddress\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df\",\"dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-periphery/contracts/libraries/PoolAddress.sol":"PoolAddress"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-periphery/contracts/libraries/PoolAddress.sol":{"keccak256":"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f","urls":["bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df","dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E"],"license":"GPL-2.0-or-later"}},"version":1},"id":69} \ No newline at end of file diff --git a/out/PredicateClient.sol/PredicateClient.json b/out/PredicateClient.sol/PredicateClient.json new file mode 100644 index 00000000..daa34397 --- /dev/null +++ b/out/PredicateClient.sol/PredicateClient.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"policyID","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IServiceManager"}],"stateMutability":"view"},{"type":"function","name":"setPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceManager","inputs":[{"name":"_serviceManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"PredicateClient__Unauthorized","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6105e68061007e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100cf5780639b41bf23146100e0578063c6cf634b146100f3578063f2fde38b1461010857600080fd5b80633998fdd3146100825780636b4c991b146100b2578063715018a6146100c7575b600080fd5b600154610095906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100c036600461043f565b61011b565b005b6100c561019c565b6000546001600160a01b0316610095565b6100c56100ee3660046104f0565b6101b0565b6100fb6101da565b6040516100a99190610520565b6100c56101163660046104f0565b610268565b6101236102e6565b8051610136906002906020840190610390565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610167908490600401610520565b600060405180830381600087803b15801561018157600080fd5b505af1158015610195573d6000803e3d6000fd5b5050505050565b6101a46102e6565b6101ae6000610340565b565b6101b86102e6565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600280546101e790610575565b80601f016020809104026020016040519081016040528092919081815260200182805461021390610575565b80156102605780601f1061023557610100808354040283529160200191610260565b820191906000526020600020905b81548152906001019060200180831161024357829003601f168201915b505050505081565b6102706102e6565b6001600160a01b0381166102da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102e381610340565b50565b6000546001600160a01b031633146101ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805461039c90610575565b90600052602060002090601f0160209004810192826103be5760008555610404565b82601f106103d757805160ff1916838001178555610404565b82800160010185558215610404579182015b828111156104045782518255916020019190600101906103e9565b50610410929150610414565b5090565b5b808211156104105760008155600101610415565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561045157600080fd5b813567ffffffffffffffff8082111561046957600080fd5b818401915084601f83011261047d57600080fd5b81358181111561048f5761048f610429565b604051601f8201601f19908116603f011681019083821181831017156104b7576104b7610429565b816040528281528760208487010111156104d057600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561050257600080fd5b81356001600160a01b038116811461051957600080fd5b9392505050565b600060208083528351808285015260005b8181101561054d57858101830151858201604001528201610531565b8181111561055f576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168061058957607f821691505b602082108114156105aa57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220813426244b03555d8a78a1c2b34e234dbd7240b001a041cbc66809ba3e20994b64736f6c634300080c0033","sourceMap":"277:1709:79:-:0;;;;;;;;;;;;-1:-1:-1;936:32:41;719:10:52;936:18:41;:32::i;:::-;277:1709:79;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;277:1709:79:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100cf5780639b41bf23146100e0578063c6cf634b146100f3578063f2fde38b1461010857600080fd5b80633998fdd3146100825780636b4c991b146100b2578063715018a6146100c7575b600080fd5b600154610095906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100c036600461043f565b61011b565b005b6100c561019c565b6000546001600160a01b0316610095565b6100c56100ee3660046104f0565b6101b0565b6100fb6101da565b6040516100a99190610520565b6100c56101163660046104f0565b610268565b6101236102e6565b8051610136906002906020840190610390565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610167908490600401610520565b600060405180830381600087803b15801561018157600080fd5b505af1158015610195573d6000803e3d6000fd5b5050505050565b6101a46102e6565b6101ae6000610340565b565b6101b86102e6565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600280546101e790610575565b80601f016020809104026020016040519081016040528092919081815260200182805461021390610575565b80156102605780601f1061023557610100808354040283529160200191610260565b820191906000526020600020905b81548152906001019060200180831161024357829003601f168201915b505050505081565b6102706102e6565b6001600160a01b0381166102da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102e381610340565b50565b6000546001600160a01b031633146101ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805461039c90610575565b90600052602060002090601f0160209004810192826103be5760008555610404565b82601f106103d757805160ff1916838001178555610404565b82800160010185558215610404579182015b828111156104045782518255916020019190600101906103e9565b50610410929150610414565b5090565b5b808211156104105760008155600101610415565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561045157600080fd5b813567ffffffffffffffff8082111561046957600080fd5b818401915084601f83011261047d57600080fd5b81358181111561048f5761048f610429565b604051601f8201601f19908116603f011681019083821181831017156104b7576104b7610429565b816040528281528760208487010111156104d057600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561050257600080fd5b81356001600160a01b038116811461051957600080fd5b9392505050565b600060208083528351808285015260005b8181101561054d57858101830151858201604001528201610531565b8181111561055f576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168061058957607f821691505b602082108114156105aa57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220813426244b03555d8a78a1c2b34e234dbd7240b001a041cbc66809ba3e20994b64736f6c634300080c0033","sourceMap":"277:1709:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;381:37;;;;;-1:-1:-1;;;;;381:37:79;;;;;;-1:-1:-1;;;;;203:32:120;;;185:51;;173:2;158:18;381:37:79;;;;;;;;811:159;;;;;;:::i;:::-;;:::i;:::-;;1831:101:41;;;:::i;1201:85::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;1117:149:79;;;;;;:::i;:::-;;:::i;424:22::-;;;:::i;:::-;;;;;;;:::i;2081:198:41:-;;;;;;:::i;:::-;;:::i;811:159:79:-;1094:13:41;:11;:13::i;:::-;898:20:79;;::::1;::::0;:8:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;928:14:79::1;::::0;:35:::1;::::0;-1:-1:-1;;;928:35:79;;-1:-1:-1;;;;;928:14:79;;::::1;::::0;:24:::1;::::0;:35:::1;::::0;953:9;;928:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;811:159:::0;:::o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1117:149:79:-;1094:13:41;:11;:13::i;:::-;1210:14:79::1;:49:::0;;-1:-1:-1;;;;;;1210:49:79::1;-1:-1:-1::0;;;;;1210:49:79;;;::::1;::::0;;;::::1;::::0;;1117:149::o;424:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;2994:2:120;2161:73:41::1;::::0;::::1;2976:21:120::0;3033:2;3013:18;;;3006:30;3072:34;3052:18;;;3045:62;-1:-1:-1;;;3123:18:120;;;3116:36;3169:19;;2161:73:41::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;3401:2:120;1414:68:41;;;3383:21:120;;;3420:18;;;3413:30;3479:34;3459:18;;;3452:62;3531:18;;1414:68:41;3199:356:120;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;247:127:120;308:10;303:3;299:20;296:1;289:31;339:4;336:1;329:15;363:4;360:1;353:15;379:922;448:6;501:2;489:9;480:7;476:23;472:32;469:52;;;517:1;514;507:12;469:52;557:9;544:23;586:18;627:2;619:6;616:14;613:34;;;643:1;640;633:12;613:34;681:6;670:9;666:22;656:32;;726:7;719:4;715:2;711:13;707:27;697:55;;748:1;745;738:12;697:55;784:2;771:16;806:2;802;799:10;796:36;;;812:18;;:::i;:::-;887:2;881:9;855:2;941:13;;-1:-1:-1;;937:22:120;;;961:2;933:31;929:40;917:53;;;985:18;;;1005:22;;;982:46;979:72;;;1031:18;;:::i;:::-;1071:10;1067:2;1060:22;1106:2;1098:6;1091:18;1146:7;1141:2;1136;1132;1128:11;1124:20;1121:33;1118:53;;;1167:1;1164;1157:12;1118:53;1223:2;1218;1214;1210:11;1205:2;1197:6;1193:15;1180:46;1268:1;1246:15;;;1263:2;1242:24;1235:35;;;;-1:-1:-1;1250:6:120;379:922;-1:-1:-1;;;;;379:922:120:o;1514:286::-;1573:6;1626:2;1614:9;1605:7;1601:23;1597:32;1594:52;;;1642:1;1639;1632:12;1594:52;1668:23;;-1:-1:-1;;;;;1720:31:120;;1710:42;;1700:70;;1766:1;1763;1756:12;1700:70;1789:5;1514:286;-1:-1:-1;;;1514:286:120:o;1805:597::-;1917:4;1946:2;1975;1964:9;1957:21;2007:6;2001:13;2050:6;2045:2;2034:9;2030:18;2023:34;2075:1;2085:140;2099:6;2096:1;2093:13;2085:140;;;2194:14;;;2190:23;;2184:30;2160:17;;;2179:2;2156:26;2149:66;2114:10;;2085:140;;;2243:6;2240:1;2237:13;2234:91;;;2313:1;2308:2;2299:6;2288:9;2284:22;2280:31;2273:42;2234:91;-1:-1:-1;2386:2:120;2365:15;-1:-1:-1;;2361:29:120;2346:45;;;;2393:2;2342:54;;1805:597;-1:-1:-1;;;1805:597:120:o;2407:380::-;2486:1;2482:12;;;;2529;;;2550:61;;2604:4;2596:6;2592:17;2582:27;;2550:61;2657:2;2649:6;2646:14;2626:18;2623:38;2620:161;;;2703:10;2698:3;2694:20;2691:1;2684:31;2738:4;2735:1;2728:15;2766:4;2763:1;2756:15;2620:161;;2407:380;;;:::o","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","policyID()":"c6cf634b","renounceOwnership()":"715018a6","serviceManager()":"3998fdd3","setPolicy(string)":"6b4c991b","setServiceManager(address)":"9b41bf23","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PredicateClient__Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"policyID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceManager\",\"outputs\":[{\"internalType\":\"contract IServiceManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceManager\",\"type\":\"address\"}],\"name\":\"setServiceManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setPolicy(string)\":{\"params\":{\"_policyID\":\"policy ID from onchain\"}},\"setServiceManager(address)\":{\"params\":{\"_serviceManager\":\"address of the service manager\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setPolicy(string)\":{\"notice\":\"Updates the policy ID\"},\"setServiceManager(address)\":{\"notice\":\"Internal function for setting the ServiceManager\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mixins/PredicateClient.sol\":\"PredicateClient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"PredicateClient__Unauthorized"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"policyID","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceManager","outputs":[{"internalType":"contract IServiceManager","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setPolicy"},{"inputs":[{"internalType":"address","name":"_serviceManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceManager"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setPolicy(string)":{"params":{"_policyID":"policy ID from onchain"}},"setServiceManager(address)":{"params":{"_serviceManager":"address of the service manager"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"setPolicy(string)":{"notice":"Updates the policy ID"},"setServiceManager(address)":{"notice":"Internal function for setting the ServiceManager"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/mixins/PredicateClient.sol":"PredicateClient"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"}},"version":1},"id":79} \ No newline at end of file diff --git a/out/PriceAggregatorUniV3.sol/PriceAggregatorUniV3.json b/out/PriceAggregatorUniV3.sol/PriceAggregatorUniV3.json new file mode 100644 index 00000000..021dbd79 --- /dev/null +++ b/out/PriceAggregatorUniV3.sol/PriceAggregatorUniV3.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_weth","type":"address","internalType":"address"},{"name":"_usdc","type":"address","internalType":"address"},{"name":"_defaultTWAPPeriod","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"USDC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"assetToAsset","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_amountIn","type":"uint256","internalType":"uint256"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_twapPeriod","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"assetToEth","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_amountIn","type":"uint256","internalType":"uint256"},{"name":"_twapPeriod","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ethAmountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"defaultTWAPPeriod","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ethToAsset","inputs":[{"name":"_ethAmountIn","type":"uint256","internalType":"uint256"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_twapPeriod","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fetchCurrentTicks","inputs":[{"name":"_pool","type":"address","internalType":"address"},{"name":"_twapPeriod","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"spotTick","type":"int24","internalType":"int24"},{"name":"twapTick","type":"int24","internalType":"int24"}],"stateMutability":"view"},{"type":"function","name":"getPoolForRoute","inputs":[{"name":"_tokenA","type":"address","internalType":"address"},{"name":"_tokenB","type":"address","internalType":"address"}],"outputs":[{"name":"pool","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_tokenID","type":"string","internalType":"string"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getQuoteAtTick","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_amountIn","type":"uint128","internalType":"uint128"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"getQuoteCrossingTicksThroughWeth","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_amountIn","type":"uint128","internalType":"uint128"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_tick1","type":"int24","internalType":"int24"},{"name":"_tick2","type":"int24","internalType":"int24"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isTokenSupported","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"overriddenPoolForRoute","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeToken","inputs":[{"name":"_tokenID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTWAPPeriod","inputs":[{"name":"_twapPeriod","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUSDCPoolForToken","inputs":[{"name":"_tokenA","type":"address","internalType":"address"},{"name":"_tokenID","type":"string","internalType":"string"},{"name":"_pool","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokenIDToAddress","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"PriceAggregatorUniV3_NoPoolFound","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"}]},{"type":"error","name":"T","inputs":[]}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b5060405162002372380380620023728339810160408190526200003491620000d4565b6200003f3362000067565b6200004a8462000067565b6001600160a01b03928316608052911660a0526001555062000126565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000cf57600080fd5b919050565b60008060008060808587031215620000eb57600080fd5b620000f685620000b7565b93506200010660208601620000b7565b92506200011660408601620000b7565b6060959095015193969295505050565b60805160a0516121ee620001846000396000818161025d0152818161054f01526107810152600081816102ce0152818161036a015281816105dc01528181610628015281816106ae0152818161129f01526112d401526121ee6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063b8791ee211610071578063b8791ee2146102f0578063d45bd6b1146102f9578063ef25868b1461030c578063f2fde38b14610340578063feefb5631461035357600080fd5b80638da5cb5b1461027f5780638f5dab9a1461029057806390a3ad8a146102a3578063a6fe34c6146102b6578063ad5c4648146102c957600080fd5b806357fa59eb116100f457806357fa59eb146101fd5780636a3b312a14610210578063715018a61461023d5780637c6619491461024557806389a302711461025857600080fd5b806213b4fc1461013057806301276acf146101565780630d3652ec146101975780631f455922146101d55780632ef3accc146101ea575b600080fd5b61014361013e366004611833565b610366565b6040519081526020015b60405180910390f35b61017f61016436600461186b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014d565b6101c56101a53660046118cb565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161014d565b6101e86101e33660046119a9565b6103b8565b005b6101436101f83660046119eb565b6104a7565b61014361020b366004611a5b565b61057f565b61022361021e366004611ac9565b610598565b60408051600293840b81529190920b60208201520161014d565b6101e86105c4565b610143610253366004611b02565b6105d8565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661017f565b61014361029e366004611b4a565b610677565b61017f6102b1366004611bbb565b610699565b6101436102c4366004611be9565b6106aa565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b61014360015481565b6101e861030736600461186b565b6106eb565b61017f61031a3660046118cb565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6101e861034e366004611c1e565b6106f8565b6101e8610361366004611c3b565b610771565b60007f00000000000000000000000000000000000000000000000000000000000000008161039d6103988387846109c0565b610a2b565b90506103ac8287878488610a7e565b925050505b9392505050565b6103c0610b18565b600382826040516103d2929190611c98565b9081526040519081900360200190205460ff1661042c5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064015b60405180910390fd5b600060038383604051610440929190611c98565b908152604051908190036020018120805492151560ff19909316929092179091556000906002906104749085908590611c98565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000600384846040516104bb929190611c98565b9081526040519081900360200190205460ff166105105760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610423565b600060028585604051610524929190611c98565b908152602001604051809103902060009054906101000a90046001600160a01b0316905061057681847f00000000000000000000000000000000000000000000000000000000000000006001546105d8565b95945050505050565b600061058d82858786610b72565b90505b949350505050565b6000806000806105a786610c80565b90945091506105b68686610f8c565b509396939550929350505050565b6105cc610b18565b6105d660006111d3565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156106265761061f848484610366565b9050610590565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561066b5761061f8585846106aa565b61061f85858585611223565b600061068f86866001600160801b031686868661128c565b9695505050505050565b60006103b1610398848460006109c0565b60007f0000000000000000000000000000000000000000000000000000000000000000816106dc6103988784846109c0565b90506103ac8686848488610a7e565b6106f3610b18565b600155565b610700610b18565b6001600160a01b0381166107655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610423565b61076e816111d3565b50565b610779610b18565b60006107a7857f000000000000000000000000000000000000000000000000000000000000000060006109c0565b90506001600160a01b0382161561090057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611ca8565b6001600160a01b031681600001516001600160a01b03161480156108b45750816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190611ca8565b6001600160a01b031681602001516001600160a01b0316145b6109005760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e73206f7220706f6f6c206e6f7420636f72726563740000000000006044820152606401610423565b816004600061090e84611304565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028585604051610953929190611c98565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160038585604051610999929190611c98565b908152604051908190036020019020805491151560ff199092169190911790555050505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156109fb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000610a368261134e565b90506001600160a01b038116610a795781516020830151604051634e8a64e960e01b81526001600160a01b03928316600482015291166024820152604401610423565b919050565b6000806000806000610a8f87610c80565b9094509250610aa687610aa18861137d565b610f8c565b909250905060006001600160a01b03808a16908c161015610add578260020b8560020b12610ad45782610ad6565b845b9050610af5565b8260020b8560020b13610af05782610af2565b845b90505b610b0981610b028c6113e2565b8d8c610b72565b9b9a5050505050505050505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610423565b600080610b7e8661144b565b90506001600160801b036001600160a01b03821611610c04576000610bac6001600160a01b03831680611cdb565b9050836001600160a01b0316856001600160a01b031610610be457610bdf600160c01b876001600160801b03168361176b565b610bfc565b610bfc81876001600160801b0316600160c01b61176b565b925050610c77565b6000610c236001600160a01b038316806801000000000000000061176b565b9050836001600160a01b0316856001600160a01b031610610c5b57610c56600160801b876001600160801b03168361176b565b610c73565b610c7381876001600160801b0316600160801b61176b565b9250505b50949350505050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611d1c565b5050509350935093505060018161ffff1611610d2e5760405162461bcd60e51b81526020600482015260036024820152624e454f60e81b6044820152606401610423565b60405163252c09d760e01b815261ffff83166004820152600090819081906001600160a01b038a169063252c09d790602401608060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190611dc1565b509250925092504263ffffffff168363ffffffff1614610e2d5785896001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190611e19565b97509750505050505050915091565b60008461ffff1660018661ffff168861ffff16610e4a9190611e36565b610e549190611e4e565b610e5e9190611e7b565b90506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401610e9491815260200190565b608060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed59190611dc1565b935093509350935080610f105760405162461bcd60e51b81526020600482015260036024820152624f4e4960e81b6044820152606401610423565b6000610f1c858a611e8f565b905063ffffffff8116610f2f858a611eb4565b610f399190611f04565b9b5060006020610f49858a611f42565b6001600160a01b0390811690911b90610f689063ffffffff8516611f62565b610f729190611f91565b90508c819e509e5050505050505050505050505050915091565b60008063ffffffff8316610fc75760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610423565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610ffc57610ffc611fb7565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061102b5761102b611fb7565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016110749190611fcd565b600060405180830381865afa158015611091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110b991908101906120af565b915091506000826000815181106110d2576110d2611fb7565b6020026020010151836001815181106110ed576110ed611fb7565b60200260200101516110ff9190611eb4565b905060008260008151811061111657611116611fb7565b60200260200101518360018151811061113157611131611fb7565b60200260200101516111439190611f42565b905061115563ffffffff891683611f04565b965060008260060b12801561117b575061117563ffffffff891683612172565b60060b15155b1561118e578661118a81612194565b9750505b60006111a76001600160a01b0363ffffffff8b16611f62565b90506111c4640100000000600160c01b03602084901b1682611f91565b96505050505050509250929050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123a611235878660006109c0565b61134e565b90506001600160a01b03811615611260576112588686868487610a7e565b915050610590565b604051634e8a64e960e01b81526001600160a01b03808816600483015285166024820152604401610423565b6000806112c38461129c886113e2565b897f0000000000000000000000000000000000000000000000000000000000000000610b72565b90506112f9836112d2836113e2565b7f000000000000000000000000000000000000000000000000000000000000000088610b72565b979650505050505050565b8051602091820151604080516bffffffffffffffffffffffff19606094851b8116828701529290931b90911660348301528051808303602801815260489092019052805191012090565b60006004600061135d84611304565b81526020810191909152604001600020546001600160a01b031692915050565b8063ffffffff81168114610a795760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610423565b806001600160801b0381168114610a795760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610423565b60008060008360020b12611462578260020b61146a565b8260020b6000035b9050620d89e8811115611490576040516315e4079d60e11b815260040160405180910390fd5b6000600182166114a457600160801b6114b6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156114ea576ffff97272373d413259a46990580e213a0260801c5b6004821615611509576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611528576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611547576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611566576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611585576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156115a4576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156115c4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156115e4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611604576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611624576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611644576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611664576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611684576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156116a4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156116c5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156116e5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611704576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611721576b048a170391f7dc42444e8fa20260801c5b60008460020b131561174257806000198161173e5761173e611e65565b0490505b640100000000810615611756576001611759565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600014156117a5576000841161179a57600080fd5b5082900490506103b1565b8084116117b157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038116811461076e57600080fd5b60008060006060848603121561184857600080fd5b83359250602084013561185a8161181e565b929592945050506040919091013590565b60006020828403121561187d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118c3576118c3611884565b604052919050565b600060208083850312156118de57600080fd5b823567ffffffffffffffff808211156118f657600080fd5b818501915085601f83011261190a57600080fd5b81358181111561191c5761191c611884565b61192e601f8201601f1916850161189a565b9150808252868482850101111561194457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360208285010111156119a257600080fd5b9250929050565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611960565b90969095509350505050565b600080600060408486031215611a0057600080fd5b833567ffffffffffffffff811115611a1757600080fd5b611a2386828701611960565b909790965060209590950135949350505050565b6001600160801b038116811461076e57600080fd5b8060020b811461076e57600080fd5b60008060008060808587031215611a7157600080fd5b8435611a7c8161181e565b93506020850135611a8c81611a37565b92506040850135611a9c8161181e565b91506060850135611aac81611a4c565b939692955090935050565b63ffffffff8116811461076e57600080fd5b60008060408385031215611adc57600080fd5b8235611ae78161181e565b91506020830135611af781611ab7565b809150509250929050565b60008060008060808587031215611b1857600080fd5b8435611b238161181e565b9350602085013592506040850135611b3a8161181e565b9396929550929360600135925050565b600080600080600060a08688031215611b6257600080fd5b8535611b6d8161181e565b94506020860135611b7d81611a37565b93506040860135611b8d8161181e565b92506060860135611b9d81611a4c565b91506080860135611bad81611a4c565b809150509295509295909350565b60008060408385031215611bce57600080fd5b8235611bd98161181e565b91506020830135611af78161181e565b600080600060608486031215611bfe57600080fd5b8335611c098161181e565b95602085013595506040909401359392505050565b600060208284031215611c3057600080fd5b81356103b18161181e565b60008060008060608587031215611c5157600080fd5b8435611c5c8161181e565b9350602085013567ffffffffffffffff811115611c7857600080fd5b611c8487828801611960565b9094509250506040850135611aac8161181e565b8183823760009101908152919050565b600060208284031215611cba57600080fd5b81516103b18161181e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cf557611cf5611cc5565b500290565b805161ffff81168114610a7957600080fd5b80518015158114610a7957600080fd5b600080600080600080600060e0888a031215611d3757600080fd5b8751611d428161181e565b6020890151909750611d5381611a4c565b9550611d6160408901611cfa565b9450611d6f60608901611cfa565b9350611d7d60808901611cfa565b925060a088015160ff81168114611d9357600080fd5b9150611da160c08901611d0c565b905092959891949750929550565b8051600681900b8114610a7957600080fd5b60008060008060808587031215611dd757600080fd5b8451611de281611ab7565b9350611df060208601611daf565b92506040850151611e008161181e565b9150611e0e60608601611d0c565b905092959194509250565b600060208284031215611e2b57600080fd5b81516103b181611a37565b60008219821115611e4957611e49611cc5565b500190565b600082821015611e6057611e60611cc5565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e8a57611e8a611e65565b500690565b600063ffffffff83811690831681811015611eac57611eac611cc5565b039392505050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615611edf57611edf611cc5565b81667fffffffffffff018313811615611efa57611efa611cc5565b5090039392505050565b60008160060b8360060b80611f1b57611f1b611e65565b667fffffffffffff19821460001982141615611f3957611f39611cc5565b90059392505050565b60006001600160a01b0383811690831681811015611eac57611eac611cc5565b60006001600160c01b0382811684821681151582840482111615611f8857611f88611cc5565b02949350505050565b60006001600160c01b0383811680611fab57611fab611e65565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561200b57835163ffffffff1683529284019291840191600101611fe9565b50909695505050505050565b600067ffffffffffffffff82111561203157612031611884565b5060051b60200190565b600082601f83011261204c57600080fd5b8151602061206161205c83612017565b61189a565b82815260059290921b8401810191818101908684111561208057600080fd5b8286015b848110156120a45780516120978161181e565b8352918301918301612084565b509695505050505050565b600080604083850312156120c257600080fd5b825167ffffffffffffffff808211156120da57600080fd5b818501915085601f8301126120ee57600080fd5b815160206120fe61205c83612017565b82815260059290921b8401810191818101908984111561211d57600080fd5b948201945b838610156121425761213386611daf565b82529482019490820190612122565b9188015191965090935050508082111561215b57600080fd5b506121688582860161203b565b9150509250929050565b60008260060b8061218557612185611e65565b808360060b0791505092915050565b60008160020b627fffff198114156121ae576121ae611cc5565b600019019291505056fea2646970667358221220bbf12e190f519e18639783ed80d5dc10202cb112533d41caf7d427bed6867ab664736f6c634300080c0033","sourceMap":"637:14174:70:-:0;;;1063:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:41;719:10:52;936:18:41;:32::i;:::-;1159:26:70;1178:6;1159:18;:26::i;:::-;-1:-1:-1;;;;;1195:12:70;;;;;1217;;;;1239:17;:38;-1:-1:-1;637:14174:70;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:177:120:-;93:13;;-1:-1:-1;;;;;135:31:120;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:440::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;626:2;611:18;;;;605:25;196:440;;;;-1:-1:-1;;;196:440:120:o;:::-;637:14174:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063b8791ee211610071578063b8791ee2146102f0578063d45bd6b1146102f9578063ef25868b1461030c578063f2fde38b14610340578063feefb5631461035357600080fd5b80638da5cb5b1461027f5780638f5dab9a1461029057806390a3ad8a146102a3578063a6fe34c6146102b6578063ad5c4648146102c957600080fd5b806357fa59eb116100f457806357fa59eb146101fd5780636a3b312a14610210578063715018a61461023d5780637c6619491461024557806389a302711461025857600080fd5b806213b4fc1461013057806301276acf146101565780630d3652ec146101975780631f455922146101d55780632ef3accc146101ea575b600080fd5b61014361013e366004611833565b610366565b6040519081526020015b60405180910390f35b61017f61016436600461186b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014d565b6101c56101a53660046118cb565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161014d565b6101e86101e33660046119a9565b6103b8565b005b6101436101f83660046119eb565b6104a7565b61014361020b366004611a5b565b61057f565b61022361021e366004611ac9565b610598565b60408051600293840b81529190920b60208201520161014d565b6101e86105c4565b610143610253366004611b02565b6105d8565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661017f565b61014361029e366004611b4a565b610677565b61017f6102b1366004611bbb565b610699565b6101436102c4366004611be9565b6106aa565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b61014360015481565b6101e861030736600461186b565b6106eb565b61017f61031a3660046118cb565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6101e861034e366004611c1e565b6106f8565b6101e8610361366004611c3b565b610771565b60007f00000000000000000000000000000000000000000000000000000000000000008161039d6103988387846109c0565b610a2b565b90506103ac8287878488610a7e565b925050505b9392505050565b6103c0610b18565b600382826040516103d2929190611c98565b9081526040519081900360200190205460ff1661042c5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064015b60405180910390fd5b600060038383604051610440929190611c98565b908152604051908190036020018120805492151560ff19909316929092179091556000906002906104749085908590611c98565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000600384846040516104bb929190611c98565b9081526040519081900360200190205460ff166105105760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610423565b600060028585604051610524929190611c98565b908152602001604051809103902060009054906101000a90046001600160a01b0316905061057681847f00000000000000000000000000000000000000000000000000000000000000006001546105d8565b95945050505050565b600061058d82858786610b72565b90505b949350505050565b6000806000806105a786610c80565b90945091506105b68686610f8c565b509396939550929350505050565b6105cc610b18565b6105d660006111d3565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156106265761061f848484610366565b9050610590565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561066b5761061f8585846106aa565b61061f85858585611223565b600061068f86866001600160801b031686868661128c565b9695505050505050565b60006103b1610398848460006109c0565b60007f0000000000000000000000000000000000000000000000000000000000000000816106dc6103988784846109c0565b90506103ac8686848488610a7e565b6106f3610b18565b600155565b610700610b18565b6001600160a01b0381166107655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610423565b61076e816111d3565b50565b610779610b18565b60006107a7857f000000000000000000000000000000000000000000000000000000000000000060006109c0565b90506001600160a01b0382161561090057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611ca8565b6001600160a01b031681600001516001600160a01b03161480156108b45750816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190611ca8565b6001600160a01b031681602001516001600160a01b0316145b6109005760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e73206f7220706f6f6c206e6f7420636f72726563740000000000006044820152606401610423565b816004600061090e84611304565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028585604051610953929190611c98565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160038585604051610999929190611c98565b908152604051908190036020019020805491151560ff199092169190911790555050505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156109fb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000610a368261134e565b90506001600160a01b038116610a795781516020830151604051634e8a64e960e01b81526001600160a01b03928316600482015291166024820152604401610423565b919050565b6000806000806000610a8f87610c80565b9094509250610aa687610aa18861137d565b610f8c565b909250905060006001600160a01b03808a16908c161015610add578260020b8560020b12610ad45782610ad6565b845b9050610af5565b8260020b8560020b13610af05782610af2565b845b90505b610b0981610b028c6113e2565b8d8c610b72565b9b9a5050505050505050505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610423565b600080610b7e8661144b565b90506001600160801b036001600160a01b03821611610c04576000610bac6001600160a01b03831680611cdb565b9050836001600160a01b0316856001600160a01b031610610be457610bdf600160c01b876001600160801b03168361176b565b610bfc565b610bfc81876001600160801b0316600160c01b61176b565b925050610c77565b6000610c236001600160a01b038316806801000000000000000061176b565b9050836001600160a01b0316856001600160a01b031610610c5b57610c56600160801b876001600160801b03168361176b565b610c73565b610c7381876001600160801b0316600160801b61176b565b9250505b50949350505050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611d1c565b5050509350935093505060018161ffff1611610d2e5760405162461bcd60e51b81526020600482015260036024820152624e454f60e81b6044820152606401610423565b60405163252c09d760e01b815261ffff83166004820152600090819081906001600160a01b038a169063252c09d790602401608060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190611dc1565b509250925092504263ffffffff168363ffffffff1614610e2d5785896001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190611e19565b97509750505050505050915091565b60008461ffff1660018661ffff168861ffff16610e4a9190611e36565b610e549190611e4e565b610e5e9190611e7b565b90506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401610e9491815260200190565b608060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed59190611dc1565b935093509350935080610f105760405162461bcd60e51b81526020600482015260036024820152624f4e4960e81b6044820152606401610423565b6000610f1c858a611e8f565b905063ffffffff8116610f2f858a611eb4565b610f399190611f04565b9b5060006020610f49858a611f42565b6001600160a01b0390811690911b90610f689063ffffffff8516611f62565b610f729190611f91565b90508c819e509e5050505050505050505050505050915091565b60008063ffffffff8316610fc75760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610423565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610ffc57610ffc611fb7565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061102b5761102b611fb7565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016110749190611fcd565b600060405180830381865afa158015611091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110b991908101906120af565b915091506000826000815181106110d2576110d2611fb7565b6020026020010151836001815181106110ed576110ed611fb7565b60200260200101516110ff9190611eb4565b905060008260008151811061111657611116611fb7565b60200260200101518360018151811061113157611131611fb7565b60200260200101516111439190611f42565b905061115563ffffffff891683611f04565b965060008260060b12801561117b575061117563ffffffff891683612172565b60060b15155b1561118e578661118a81612194565b9750505b60006111a76001600160a01b0363ffffffff8b16611f62565b90506111c4640100000000600160c01b03602084901b1682611f91565b96505050505050509250929050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123a611235878660006109c0565b61134e565b90506001600160a01b03811615611260576112588686868487610a7e565b915050610590565b604051634e8a64e960e01b81526001600160a01b03808816600483015285166024820152604401610423565b6000806112c38461129c886113e2565b897f0000000000000000000000000000000000000000000000000000000000000000610b72565b90506112f9836112d2836113e2565b7f000000000000000000000000000000000000000000000000000000000000000088610b72565b979650505050505050565b8051602091820151604080516bffffffffffffffffffffffff19606094851b8116828701529290931b90911660348301528051808303602801815260489092019052805191012090565b60006004600061135d84611304565b81526020810191909152604001600020546001600160a01b031692915050565b8063ffffffff81168114610a795760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610423565b806001600160801b0381168114610a795760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610423565b60008060008360020b12611462578260020b61146a565b8260020b6000035b9050620d89e8811115611490576040516315e4079d60e11b815260040160405180910390fd5b6000600182166114a457600160801b6114b6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156114ea576ffff97272373d413259a46990580e213a0260801c5b6004821615611509576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611528576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611547576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611566576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611585576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156115a4576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156115c4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156115e4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611604576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611624576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611644576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611664576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611684576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156116a4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156116c5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156116e5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611704576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611721576b048a170391f7dc42444e8fa20260801c5b60008460020b131561174257806000198161173e5761173e611e65565b0490505b640100000000810615611756576001611759565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600014156117a5576000841161179a57600080fd5b5082900490506103b1565b8084116117b157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038116811461076e57600080fd5b60008060006060848603121561184857600080fd5b83359250602084013561185a8161181e565b929592945050506040919091013590565b60006020828403121561187d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118c3576118c3611884565b604052919050565b600060208083850312156118de57600080fd5b823567ffffffffffffffff808211156118f657600080fd5b818501915085601f83011261190a57600080fd5b81358181111561191c5761191c611884565b61192e601f8201601f1916850161189a565b9150808252868482850101111561194457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360208285010111156119a257600080fd5b9250929050565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611960565b90969095509350505050565b600080600060408486031215611a0057600080fd5b833567ffffffffffffffff811115611a1757600080fd5b611a2386828701611960565b909790965060209590950135949350505050565b6001600160801b038116811461076e57600080fd5b8060020b811461076e57600080fd5b60008060008060808587031215611a7157600080fd5b8435611a7c8161181e565b93506020850135611a8c81611a37565b92506040850135611a9c8161181e565b91506060850135611aac81611a4c565b939692955090935050565b63ffffffff8116811461076e57600080fd5b60008060408385031215611adc57600080fd5b8235611ae78161181e565b91506020830135611af781611ab7565b809150509250929050565b60008060008060808587031215611b1857600080fd5b8435611b238161181e565b9350602085013592506040850135611b3a8161181e565b9396929550929360600135925050565b600080600080600060a08688031215611b6257600080fd5b8535611b6d8161181e565b94506020860135611b7d81611a37565b93506040860135611b8d8161181e565b92506060860135611b9d81611a4c565b91506080860135611bad81611a4c565b809150509295509295909350565b60008060408385031215611bce57600080fd5b8235611bd98161181e565b91506020830135611af78161181e565b600080600060608486031215611bfe57600080fd5b8335611c098161181e565b95602085013595506040909401359392505050565b600060208284031215611c3057600080fd5b81356103b18161181e565b60008060008060608587031215611c5157600080fd5b8435611c5c8161181e565b9350602085013567ffffffffffffffff811115611c7857600080fd5b611c8487828801611960565b9094509250506040850135611aac8161181e565b8183823760009101908152919050565b600060208284031215611cba57600080fd5b81516103b18161181e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cf557611cf5611cc5565b500290565b805161ffff81168114610a7957600080fd5b80518015158114610a7957600080fd5b600080600080600080600060e0888a031215611d3757600080fd5b8751611d428161181e565b6020890151909750611d5381611a4c565b9550611d6160408901611cfa565b9450611d6f60608901611cfa565b9350611d7d60808901611cfa565b925060a088015160ff81168114611d9357600080fd5b9150611da160c08901611d0c565b905092959891949750929550565b8051600681900b8114610a7957600080fd5b60008060008060808587031215611dd757600080fd5b8451611de281611ab7565b9350611df060208601611daf565b92506040850151611e008161181e565b9150611e0e60608601611d0c565b905092959194509250565b600060208284031215611e2b57600080fd5b81516103b181611a37565b60008219821115611e4957611e49611cc5565b500190565b600082821015611e6057611e60611cc5565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e8a57611e8a611e65565b500690565b600063ffffffff83811690831681811015611eac57611eac611cc5565b039392505050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615611edf57611edf611cc5565b81667fffffffffffff018313811615611efa57611efa611cc5565b5090039392505050565b60008160060b8360060b80611f1b57611f1b611e65565b667fffffffffffff19821460001982141615611f3957611f39611cc5565b90059392505050565b60006001600160a01b0383811690831681811015611eac57611eac611cc5565b60006001600160c01b0382811684821681151582840482111615611f8857611f88611cc5565b02949350505050565b60006001600160c01b0383811680611fab57611fab611e65565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561200b57835163ffffffff1683529284019291840191600101611fe9565b50909695505050505050565b600067ffffffffffffffff82111561203157612031611884565b5060051b60200190565b600082601f83011261204c57600080fd5b8151602061206161205c83612017565b61189a565b82815260059290921b8401810191818101908684111561208057600080fd5b8286015b848110156120a45780516120978161181e565b8352918301918301612084565b509695505050505050565b600080604083850312156120c257600080fd5b825167ffffffffffffffff808211156120da57600080fd5b818501915085601f8301126120ee57600080fd5b815160206120fe61205c83612017565b82815260059290921b8401810191818101908984111561211d57600080fd5b948201945b838610156121425761213386611daf565b82529482019490820190612122565b9188015191965090935050508082111561215b57600080fd5b506121688582860161203b565b9150509250929050565b60008260060b8061218557612185611e65565b808360060b0791505092915050565b60008160020b627fffff198114156121ae576121ae611cc5565b600019019291505056fea2646970667358221220bbf12e190f519e18639783ed80d5dc10202cb112533d41caf7d427bed6867ab664736f6c634300080c0033","sourceMap":"637:14174:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3393:383;;;;;;:::i;:::-;;:::i;:::-;;;684:25:120;;;672:2;657:18;3393:383:70;;;;;;;;999:57;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;999:57:70;;;;;;-1:-1:-1;;;;;1069:32:120;;;1051:51;;1039:2;1024:18;999:57:70;905:203:120;946:47:70;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:14:120;;2452:22;2434:41;;2422:2;2407:18;946:47:70;2294:187:120;5292:248:70;;;;;;:::i;:::-;;:::i;:::-;;1941:299;;;;;;:::i;:::-;;:::i;7302:262::-;;;;;;:::i;:::-;;:::i;6435:376::-;;;;;;:::i;:::-;;:::i;:::-;;;;5397:1:120;5386:21;;;5368:40;;5444:21;;;;5439:2;5424:18;;5417:49;5341:18;6435:376:70;5202:270:120;1831:101:41;;;:::i;1384:514:70:-;;;;;;:::i;:::-;;:::i;817:29::-;;;;;1201:85:41;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;8273:317:70;;;;;;:::i;:::-;;:::i;5836:187::-;;;;;;:::i;:::-;;:::i;2624:380::-;;;;;;:::i;:::-;;:::i;782:29::-;;;;;852:32;;;;;;5041:132;;;;;;:::i;:::-;;:::i;890:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;890:50:70;;;2081:198:41;;;;;;:::i;:::-;;:::i;4190:685:70:-;;;;;;:::i;:::-;;:::i;3393:383::-;3526:17;3573:4;3526:17;3602:71;3619:53;3573:4;3651:9;3526:17;3619:22;:53::i;:::-;3602:16;:71::i;:::-;3587:86;;3690:79;3717:7;3726:12;3740:9;3751:4;3757:11;3690:26;:79::i;:::-;3683:86;;;;3393:383;;;;;;:::o;5292:248::-;1094:13:41;:11;:13::i;:::-;5390:16:70::1;5407:8;;5390:26;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;;5382:58;;;::::0;-1:-1:-1;;;5382:58:70;;9207:2:120;5382:58:70::1;::::0;::::1;9189:21:120::0;9246:2;9226:18;;;9219:30;-1:-1:-1;;;9265:18:120;;;9258:49;9324:18;;5382:58:70::1;;;;;;;;;5479:5;5450:16;5467:8;;5450:26;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:34;;;::::1;;-1:-1:-1::0;;5450:34:70;;::::1;::::0;;;::::1;::::0;;;:26:::1;::::0;5494:16:::1;::::0;:26:::1;::::0;5511:8;;;;5494:26:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:39;;-1:-1:-1;;;;;5494:39:70;;;::::1;-1:-1:-1::0;;;;;;5494:39:70;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;5292:248:70:o;1941:299::-;2033:7;2060:16;2077:8;;2060:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2052:58;;;;-1:-1:-1;;;2052:58:70;;9207:2:120;2052:58:70;;;9189:21:120;9246:2;9226:18;;;9219:30;-1:-1:-1;;;9265:18:120;;;9258:49;9324:18;;2052:58:70;9005:343:120;2052:58:70;2120:13;2136:16;2153:8;;2136:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2136:26:70;2120:42;;2179:54;2192:5;2199:8;2209:4;2215:17;;2179:12;:54::i;:::-;2172:61;1941:299;-1:-1:-1;;;;;1941:299:70:o;7302:262::-;7454:17;7490:67;7519:5;7526:9;7537:8;7547:9;7490:28;:67::i;:::-;7483:74;;7302:262;;;;;;;:::o;6435:376::-;6540:14;6556;6582:21;6613;6672:53;6719:5;6672:46;:53::i;:::-;6644:81;;-1:-1:-1;6644:81:70;-1:-1:-1;6763:41:70;6785:5;6792:11;6763:21;:41::i;:::-;-1:-1:-1;6435:376:70;;6735:69;;-1:-1:-1;6435:376:70;;-1:-1:-1;;;;6435:376:70:o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1384:514:70:-;1551:17;1596:4;-1:-1:-1;;;;;1584:16:70;:8;-1:-1:-1;;;;;1584:16:70;;1580:312;;;1623:45;1634:9;1645;1656:11;1623:10;:45::i;:::-;1616:52;;;;1580:312;1702:4;-1:-1:-1;;;;;1689:17:70;:9;-1:-1:-1;;;;;1689:17:70;;1685:207;;;1729:44;1740:8;1750:9;1761:11;1729:10;:44::i;1685:207::-;1811:70;1837:8;1847:9;1858;1869:11;1811:25;:70::i;8273:317::-;8466:17;8502:81;8536:8;8546:9;-1:-1:-1;;;;;8502:81:70;8557:9;8568:6;8576;8502:33;:81::i;:::-;8495:88;8273:317;-1:-1:-1;;;;;;8273:317:70:o;5836:187::-;5916:12;5947:69;5964:51;5987:7;5996;6012:1;5964:22;:51::i;2624:380::-;2753:20;2804:4;2753:20;2833:71;2850:53;2873:8;2804:4;2753:20;2850:22;:53::i;2833:71::-;2818:86;;2921:76;2948:8;2958:9;2969:8;2979:4;2985:11;2921:26;:76::i;5041:132::-;1094:13:41;:11;:13::i;:::-;5135:17:70::1;:31:::0;5041:132::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;9555:2:120;2161:73:41::1;::::0;::::1;9537:21:120::0;9594:2;9574:18;;;9567:30;9633:34;9613:18;;;9606:62;-1:-1:-1;;;9684:18:120;;;9677:36;9730:19;;2161:73:41::1;9353:402:120::0;2161:73:41::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;4190:685:70:-;1094:13:41;:11;:13::i;:::-;4306:34:70::1;4343:116;4379:7;4400:4;4425:1;4343:22;:116::i;:::-;4306:153:::0;-1:-1:-1;;;;;;4473:19:70;::::1;::::0;4469:235:::1;;4566:5;-1:-1:-1::0;;;;;4551:28:70::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4533:48:70::1;:7;:14;;;-1:-1:-1::0;;;;;4533:48:70::1;;:100;;;;;4618:5;-1:-1:-1::0;;;;;4603:28:70::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4585:48:70::1;:7;:14;;;-1:-1:-1::0;;;;;4585:48:70::1;;4533:100;4508:185;;;::::0;-1:-1:-1;;;4508:185:70;;10218:2:120;4508:185:70::1;::::0;::::1;10200:21:120::0;10257:2;10237:18;;;10230:30;10296:28;10276:18;;;10269:56;10342:18;;4508:185:70::1;10016:350:120::0;4508:185:70::1;4774:5;4713:22;:58;4736:34;4762:7;4736:25;:34::i;:::-;4713:58;;;;;;;;;;;;:66;;;;;-1:-1:-1::0;;;;;4713:66:70::1;;;;;-1:-1:-1::0;;;;;4713:66:70::1;;;;;;4818:7;4789:16;4806:8;;4789:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;:36;;;;;-1:-1:-1::0;;;;;4789:36:70::1;;;;;-1:-1:-1::0;;;;;4789:36:70::1;;;;;;4864:4;4835:16;4852:8;;4835:26;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:33;;;::::1;;-1:-1:-1::0;;4835:33:70;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;4190:685:70:o;784:274:69:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;940:6:69;-1:-1:-1;;;;;931:15:69;:6;-1:-1:-1;;;;;931:15:69;;927:56;;;968:6;;976;927:56;-1:-1:-1;1000:51:69;;;;;;;;-1:-1:-1;;;;;1000:51:69;;;;;;;;;;;;;;;;;;;;;;;784:274::o;13539:390:70:-;13639:12;13670:28;13689:8;13670:18;:28::i;:::-;13663:35;-1:-1:-1;;;;;;13712:18:70;;13708:122;;13786:15;;13803;;;;13753:66;;-1:-1:-1;;;13753:66:70;;-1:-1:-1;;;;;10601:15:120;;;13753:66:70;;;10583:34:120;10653:15;;10633:18;;;10626:43;10518:18;;13753:66:70;10371:304:120;13708:122:70;13539:390;;;:::o;9409:1159::-;9606:17;9635:14;9659:21;9691:14;9715:21;9774:53;9821:5;9774:46;:53::i;:::-;9746:81;;-1:-1:-1;9746:81:70;-1:-1:-1;9865:60:70;9887:5;9894:30;9912:11;9894:17;:30::i;:::-;9865:21;:60::i;:::-;9837:88;;-1:-1:-1;9837:88:70;-1:-1:-1;10143:13:70;-1:-1:-1;;;;;10170:20:70;;;;;;;10166:184;;;10227:8;10216:19;;:8;:19;;;:41;;10249:8;10216:41;;;10238:8;10216:41;10206:51;;10166:184;;;10309:8;10298:19;;:8;:19;;;:41;;10331:8;10298:41;;;10320:8;10298:41;10288:51;;10166:184;10367:194;10409:7;10477:29;10496:9;10477:18;:29::i;:::-;10520:8;10542:9;10367:28;:194::i;:::-;10360:201;9409:1159;-1:-1:-1;;;;;;;;;;;9409:1159:70:o;1359:130:41:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;10882:2:120;1414:68:41;;;10864:21:120;;;10901:18;;;10894:30;10960:34;10940:18;;;10933:62;11012:18;;1414:68:41;10680:356:120;2647:955:68;2803:19;2834:20;2857:33;2885:4;2857:27;:33::i;:::-;2834:56;-1:-1:-1;;;;;;;;;;;3009:33:68;;;3005:591;;3058:17;3078:36;-1:-1:-1;;;;;3078:36:68;;;;:::i;:::-;3058:56;;3154:10;-1:-1:-1;;;;;3142:22:68;:9;-1:-1:-1;;;;;3142:22:68;;:156;;3250:48;-1:-1:-1;;;3276:10:68;-1:-1:-1;;;;;3250:48:68;3288:9;3250:15;:48::i;:::-;3142:156;;;3183:48;3199:9;3210:10;-1:-1:-1;;;;;3183:48:68;-1:-1:-1;;;3183:15:68;:48::i;:::-;3128:170;;3044:265;3005:591;;;3329:17;3349:52;-1:-1:-1;;;;;3349:52:68;;;3393:7;3349:15;:52::i;:::-;3329:72;;3441:10;-1:-1:-1;;;;;3429:22:68;:9;-1:-1:-1;;;;;3429:22:68;;:156;;3537:48;-1:-1:-1;;;3563:10:68;-1:-1:-1;;;;;3537:48:68;3575:9;3537:15;:48::i;:::-;3429:156;;;3470:48;3486:9;3497:10;-1:-1:-1;;;;;3470:48:68;-1:-1:-1;;;3470:15:68;:48::i;:::-;3415:170;;3315:281;3005:591;2824:778;2647:955;;;;;;:::o;4928:1811::-;5007:5;5014:7;5036:10;5048:23;5073:29;5127:4;-1:-1:-1;;;;;5112:26:68;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5033:107;;;;;;;;;;5267:1;5242:22;:26;;;5234:42;;;;-1:-1:-1;;;5234:42:68;;12761:2:120;5234:42:68;;;12743:21:120;12800:1;12780:18;;;12773:29;-1:-1:-1;;;12818:18:120;;;12811:33;12861:18;;5234:42:68;12559:326:120;5234:42:68;5738:51;;-1:-1:-1;;;5738:51:68;;13065:6:120;13053:19;;5738:51:68;;;13035:38:120;5607:27:68;;;;;;-1:-1:-1;;;;;5738:33:68;;;;;13008:18:120;;5738:51:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5593:196;;;;;;;5834:15;5803:47;;:20;:47;;;5799:125;;5874:4;5895;-1:-1:-1;;;;;5880:30:68;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5866:47;;;;;;;;;;4928:1811;;;:::o;5799:125::-;5934:17;6013:22;5954:81;;6008:1;5983:22;5955:50;;5963:16;5955:25;;:50;;;;:::i;:::-;:54;;;;:::i;:::-;5954:81;;;;:::i;:::-;5934:101;;6059:31;6104:24;6142:45;6201:20;6249:4;-1:-1:-1;;;;;6234:33:68;;6268:9;6234:44;;;;;;;;;;;;;684:25:120;;672:2;657:18;;538:177;6234:44:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6045:233;;;;;;;;6297:15;6289:31;;;;-1:-1:-1;;;6289:31:68;;14772:2:120;6289:31:68;;;14754:21:120;14811:1;14791:18;;;14784:29;-1:-1:-1;;;14829:18:120;;;14822:33;14872:18;;6289:31:68;14570:326:120;6289:31:68;6331:12;6346:47;6369:24;6346:20;:47;:::i;:::-;6331:62;-1:-1:-1;6477:13:68;;;6417:50;6447:18;6417:14;:50;:::i;:::-;6416:75;;;;:::i;:::-;6403:89;-1:-1:-1;6502:17:68;6685:2;6607:73;6643:37;6607:33;:73;:::i;:::-;-1:-1:-1;;;;;6599:82:68;;;:88;;;;6544:34;;:14;;;:34;:::i;:::-;6543:145;;;;:::i;:::-;6502:196;;6716:4;6722:9;6708:24;;;;;;;;;;;;;;;;;4928:1811;;;:::o;885:1258::-;982:24;;1061:15;;;1053:30;;;;-1:-1:-1;;;1053:30:68;;16701:2:120;1053:30:68;;;16683:21:120;16740:1;16720:18;;;16713:29;-1:-1:-1;;;16758:18:120;;;16751:32;16800:18;;1053:30:68;16499:325:120;1053:30:68;1124:15;;;1137:1;1124:15;;;;;;;;1094:27;;1124:15;;;;;;;;;;-1:-1:-1;1124:15:68;1094:45;;1166:10;1149:11;1161:1;1149:14;;;;;;;;:::i;:::-;;;;;;:27;;;;;;;;;;;1203:1;1186:11;1198:1;1186:14;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;1216:30;1248:51;1318:4;-1:-1:-1;;;;;1303:41:68;;1345:11;1303:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1303:54:68;;;;;;;;;;;;:::i;:::-;1215:142;;;;1368:26;1418:15;1434:1;1418:18;;;;;;;;:::i;:::-;;;;;;;1397:15;1413:1;1397:18;;;;;;;;:::i;:::-;;;;;;;:39;;;;:::i;:::-;1368:68;;1446:43;1544:34;1579:1;1544:37;;;;;;;;:::i;:::-;;;;;;;1492:34;1527:1;1492:37;;;;;;;;:::i;:::-;;;;;;;:89;;;;:::i;:::-;1446:135;-1:-1:-1;1619:48:68;1648:18;;;1619:20;:48;:::i;:::-;1592:76;;1750:1;1727:20;:24;;;:83;;;;-1:-1:-1;1756:48:68;1785:18;;;1756:20;:48;:::i;:::-;:53;;;;1727:83;1723:109;;;1812:20;;;;:::i;:::-;;;;1723:109;1960:22;1985:39;-1:-1:-1;;;;;1985:19:68;;;:39;:::i;:::-;1960:64;-1:-1:-1;2066:69:68;-1:-1:-1;;;;;2132:2:68;2084:50;;;;1960:64;2066:69;:::i;:::-;2034:102;;1043:1100;;;;;;885:1258;;;;;:::o;2433:187:41:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;11339:852:70:-;11512:17;11656:22;11681:180;11713:138;11753:8;11779:9;11813:1;11713:22;:138::i;:::-;11681:18;:180::i;:::-;11656:205;-1:-1:-1;;;;;;11875:28:70;;;11871:153;;11926:87;11953:8;11963:9;11974;11985:14;12001:11;11926:26;:87::i;:::-;11919:94;;;;;11871:153;12041:53;;-1:-1:-1;;;12041:53:70;;-1:-1:-1;;;;;10601:15:120;;;12041:53:70;;;10583:34:120;10653:15;;10633:18;;;10626:43;10518:18;;12041:53:70;10371:304:120;12874:442:70;13070:17;13099:20;13122:83;13151:6;13159:29;13178:9;13159:18;:29::i;:::-;13190:8;13200:4;13122:28;:83::i;:::-;13099:106;;13222:87;13251:6;13259:32;13278:12;13259:18;:32::i;:::-;13293:4;13299:9;13222:28;:87::i;:::-;13215:94;12874:442;-1:-1:-1;;;;;;;12874:442:70:o;14115:206::-;14280:15;;14297;;;;;14263:50;;;-1:-1:-1;;20288:2:120;20284:15;;;20280:24;;14263:50:70;;;20268:37:120;20339:15;;;;20335:24;;;20321:12;;;20314:46;14263:50:70;;;;;;;;;20376:12:120;;;;14263:50:70;;14253:61;;;;;;14115:206::o;14610:199::-;14712:12;14743:22;:59;14766:35;14792:8;14766:25;:35::i;:::-;14743:59;;;;;;;;;;;-1:-1:-1;14743:59:70;;-1:-1:-1;;;;;14743:59:70;;14610:199;-1:-1:-1;;14610:199:70:o;800:150:57:-;899:1;880:20;;;;;872:71;;;;-1:-1:-1;;;872:71:57;;20601:2:120;872:71:57;;;20583:21:120;20640:2;20620:18;;;20613:30;20679:34;20659:18;;;20652:62;-1:-1:-1;;;20730:18:120;;;20723:36;20776:19;;872:71:57;20399:402:120;473:154:57;575:1;-1:-1:-1;;;;;555:21:57;;;;547:73;;;;-1:-1:-1;;;547:73:57;;21008:2:120;547:73:57;;;20990:21:120;21047:2;21027:18;;;21020:30;21086:34;21066:18;;;21059:62;-1:-1:-1;;;21137:18:120;;;21130:37;21184:19;;547:73:57;20806:403:120;1385:2759:67;1448:20;1504:15;1529:1;1522:4;:8;;;:57;;1573:4;1566:12;;1522:57;;;1549:4;1542:12;;1541:13;;1522:57;1504:75;-1:-1:-1;667:9:67;1597:35;;1593:51;;;1641:3;;-1:-1:-1;;;1641:3:67;;;;;;;;;;;1593:51;1659:13;1685:3;1675:13;;:125;;-1:-1:-1;;;1675:125:67;;;1712:34;1675:125;1659:141;;;-1:-1:-1;1828:3:67;1818:13;;:18;1814:83;;1855:34;1847:42;1894:3;1846:51;1814:83;1925:3;1915:13;;:18;1911:83;;1952:34;1944:42;1991:3;1943:51;1911:83;2022:3;2012:13;;:18;2008:83;;2049:34;2041:42;2088:3;2040:51;2008:83;2119:4;2109:14;;:19;2105:84;;2147:34;2139:42;2186:3;2138:51;2105:84;2217:4;2207:14;;:19;2203:84;;2245:34;2237:42;2284:3;2236:51;2203:84;2315:4;2305:14;;:19;2301:84;;2343:34;2335:42;2382:3;2334:51;2301:84;2413:4;2403:14;;:19;2399:84;;2441:34;2433:42;2480:3;2432:51;2399:84;2511:5;2501:15;;:20;2497:85;;2540:34;2532:42;2579:3;2531:51;2497:85;2610:5;2600:15;;:20;2596:85;;2639:34;2631:42;2678:3;2630:51;2596:85;2709:5;2699:15;;:20;2695:85;;2738:34;2730:42;2777:3;2729:51;2695:85;2808:5;2798:15;;:20;2794:85;;2837:34;2829:42;2876:3;2828:51;2794:85;2907:6;2897:16;;:21;2893:86;;2937:34;2929:42;2976:3;2928:51;2893:86;3007:6;2997:16;;:21;2993:86;;3037:34;3029:42;3076:3;3028:51;2993:86;3107:6;3097:16;;:21;3093:86;;3137:34;3129:42;3176:3;3128:51;3093:86;3207:6;3197:16;;:21;3193:86;;3237:34;3229:42;3276:3;3228:51;3193:86;3307:7;3297:17;;:22;3293:86;;3338:33;3330:41;3376:3;3329:50;3293:86;3407:7;3397:17;;:22;3393:85;;3438:32;3430:40;3475:3;3429:49;3393:85;3506:7;3496:17;;:22;3492:83;;3537:30;3529:38;3572:3;3528:47;3492:83;3603:7;3593:17;;:22;3589:78;;3634:25;3626:33;3664:3;3625:42;3589:78;3693:1;3686:4;:8;;;3682:47;;;3724:5;-1:-1:-1;;3704:25:67;;;;;:::i;:::-;;3696:33;;3682:47;4104:7;4095:5;:17;:22;:30;;4124:1;4095:30;;;4120:1;4095:30;4078:48;;4088:2;4079:5;:11;;4078:48;4055:72;;1480:2658;;1385:2759;;;:::o;741:4127:66:-;853:14;;;-1:-1:-1;;1416:1:66;1413;1406:20;1459:1;1456;1452:9;1443:18;;1514:5;1510:2;1507:13;1499:5;1495:2;1491:14;1487:34;1478:43;;;1615:5;1624:1;1615:10;1611:203;;;1667:1;1653:11;:15;1645:24;;;;;;-1:-1:-1;1728:23:66;;;;-1:-1:-1;1786:13:66;;1611:203;1953:5;1939:11;:19;1931:28;;;;;;2260:17;2344:11;2341:1;2338;2331:25;2736:12;2752:15;;;2751:31;;2888:22;;;;;3763:1;3744;:15;;3743:21;;4006:17;;;4002:21;;3995:28;4068:17;;;4064:21;;4057:28;4131:17;;;4127:21;;4120:28;4194:17;;;4190:21;;4183:28;4257:17;;;4253:21;;4246:28;4321:17;;;4317:21;;;4310:28;3300:12;;;;3296:23;;;3321:1;3292:31;2489:20;;;2478:32;;;3359:12;;;;2536:21;;;;3032:16;;;;3350:21;;;;4813:11;;;;;-1:-1:-1;;741:4127:66;;;;;:::o;14:131:120:-;-1:-1:-1;;;;;89:31:120;;79:42;;69:70;;135:1;132;125:12;150:383;227:6;235;243;296:2;284:9;275:7;271:23;267:32;264:52;;;312:1;309;302:12;264:52;348:9;335:23;325:33;;408:2;397:9;393:18;380:32;421:31;446:5;421:31;:::i;:::-;150:383;;471:5;;-1:-1:-1;;;523:2:120;508:18;;;;495:32;;150:383::o;720:180::-;779:6;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;-1:-1:-1;871:23:120;;720:180;-1:-1:-1;720:180:120:o;1113:127::-;1174:10;1169:3;1165:20;1162:1;1155:31;1205:4;1202:1;1195:15;1229:4;1226:1;1219:15;1245:275;1316:2;1310:9;1381:2;1362:13;;-1:-1:-1;;1358:27:120;1346:40;;1416:18;1401:34;;1437:22;;;1398:62;1395:88;;;1463:18;;:::i;:::-;1499:2;1492:22;1245:275;;-1:-1:-1;1245:275:120:o;1525:764::-;1594:6;1625:2;1668;1656:9;1647:7;1643:23;1639:32;1636:52;;;1684:1;1681;1674:12;1636:52;1724:9;1711:23;1753:18;1794:2;1786:6;1783:14;1780:34;;;1810:1;1807;1800:12;1780:34;1848:6;1837:9;1833:22;1823:32;;1893:7;1886:4;1882:2;1878:13;1874:27;1864:55;;1915:1;1912;1905:12;1864:55;1951:2;1938:16;1973:2;1969;1966:10;1963:36;;;1979:18;;:::i;:::-;2021:53;2064:2;2045:13;;-1:-1:-1;;2041:27:120;2037:36;;2021:53;:::i;:::-;2008:66;;2097:2;2090:5;2083:17;2137:7;2132:2;2127;2123;2119:11;2115:20;2112:33;2109:53;;;2158:1;2155;2148:12;2109:53;2213:2;2208;2204;2200:11;2195:2;2188:5;2184:14;2171:45;2257:1;2236:14;;;2232:23;;;2225:34;;;;-1:-1:-1;2240:5:120;1525:764;-1:-1:-1;;;1525:764:120:o;2486:348::-;2538:8;2548:6;2602:3;2595:4;2587:6;2583:17;2579:27;2569:55;;2620:1;2617;2610:12;2569:55;-1:-1:-1;2643:20:120;;2686:18;2675:30;;2672:50;;;2718:1;2715;2708:12;2672:50;2755:4;2747:6;2743:17;2731:29;;2807:3;2800:4;2791:6;2783;2779:19;2775:30;2772:39;2769:59;;;2824:1;2821;2814:12;2769:59;2486:348;;;;;:::o;2839:411::-;2910:6;2918;2971:2;2959:9;2950:7;2946:23;2942:32;2939:52;;;2987:1;2984;2977:12;2939:52;3027:9;3014:23;3060:18;3052:6;3049:30;3046:50;;;3092:1;3089;3082:12;3046:50;3131:59;3182:7;3173:6;3162:9;3158:22;3131:59;:::i;:::-;3209:8;;3105:85;;-1:-1:-1;2839:411:120;-1:-1:-1;;;;2839:411:120:o;3255:479::-;3335:6;3343;3351;3404:2;3392:9;3383:7;3379:23;3375:32;3372:52;;;3420:1;3417;3410:12;3372:52;3460:9;3447:23;3493:18;3485:6;3482:30;3479:50;;;3525:1;3522;3515:12;3479:50;3564:59;3615:7;3606:6;3595:9;3591:22;3564:59;:::i;:::-;3642:8;;3538:85;;-1:-1:-1;3724:2:120;3709:18;;;;3696:32;;3255:479;-1:-1:-1;;;;3255:479:120:o;3739:146::-;-1:-1:-1;;;;;3818:5:120;3814:46;3807:5;3804:57;3794:85;;3875:1;3872;3865:12;3890:118;3977:5;3974:1;3963:20;3956:5;3953:31;3943:59;;3998:1;3995;3988:12;4013:667;4097:6;4105;4113;4121;4174:3;4162:9;4153:7;4149:23;4145:33;4142:53;;;4191:1;4188;4181:12;4142:53;4230:9;4217:23;4249:31;4274:5;4249:31;:::i;:::-;4299:5;-1:-1:-1;4356:2:120;4341:18;;4328:32;4369:33;4328:32;4369:33;:::i;:::-;4421:7;-1:-1:-1;4480:2:120;4465:18;;4452:32;4493:33;4452:32;4493:33;:::i;:::-;4545:7;-1:-1:-1;4604:2:120;4589:18;;4576:32;4617:31;4576:32;4617:31;:::i;:::-;4013:667;;;;-1:-1:-1;4013:667:120;;-1:-1:-1;;4013:667:120:o;4685:121::-;4770:10;4763:5;4759:22;4752:5;4749:33;4739:61;;4796:1;4793;4786:12;4811:386;4878:6;4886;4939:2;4927:9;4918:7;4914:23;4910:32;4907:52;;;4955:1;4952;4945:12;4907:52;4994:9;4981:23;5013:31;5038:5;5013:31;:::i;:::-;5063:5;-1:-1:-1;5120:2:120;5105:18;;5092:32;5133;5092;5133;:::i;:::-;5184:7;5174:17;;;4811:386;;;;;:::o;5477:525::-;5563:6;5571;5579;5587;5640:3;5628:9;5619:7;5615:23;5611:33;5608:53;;;5657:1;5654;5647:12;5608:53;5696:9;5683:23;5715:31;5740:5;5715:31;:::i;:::-;5765:5;-1:-1:-1;5817:2:120;5802:18;;5789:32;;-1:-1:-1;5873:2:120;5858:18;;5845:32;5886:33;5845:32;5886:33;:::i;:::-;5477:525;;;;-1:-1:-1;5938:7:120;;5992:2;5977:18;5964:32;;-1:-1:-1;;5477:525:120:o;6007:805::-;6098:6;6106;6114;6122;6130;6183:3;6171:9;6162:7;6158:23;6154:33;6151:53;;;6200:1;6197;6190:12;6151:53;6239:9;6226:23;6258:31;6283:5;6258:31;:::i;:::-;6308:5;-1:-1:-1;6365:2:120;6350:18;;6337:32;6378:33;6337:32;6378:33;:::i;:::-;6430:7;-1:-1:-1;6489:2:120;6474:18;;6461:32;6502:33;6461:32;6502:33;:::i;:::-;6554:7;-1:-1:-1;6613:2:120;6598:18;;6585:32;6626:31;6585:32;6626:31;:::i;:::-;6676:7;-1:-1:-1;6735:3:120;6720:19;;6707:33;6749:31;6707:33;6749:31;:::i;:::-;6799:7;6789:17;;;6007:805;;;;;;;;:::o;6817:388::-;6885:6;6893;6946:2;6934:9;6925:7;6921:23;6917:32;6914:52;;;6962:1;6959;6952:12;6914:52;7001:9;6988:23;7020:31;7045:5;7020:31;:::i;:::-;7070:5;-1:-1:-1;7127:2:120;7112:18;;7099:32;7140:33;7099:32;7140:33;:::i;7210:383::-;7287:6;7295;7303;7356:2;7344:9;7335:7;7331:23;7327:32;7324:52;;;7372:1;7369;7362:12;7324:52;7411:9;7398:23;7430:31;7455:5;7430:31;:::i;:::-;7480:5;7532:2;7517:18;;7504:32;;-1:-1:-1;7583:2:120;7568:18;;;7555:32;;7210:383;-1:-1:-1;;;7210:383:120:o;7783:247::-;7842:6;7895:2;7883:9;7874:7;7870:23;7866:32;7863:52;;;7911:1;7908;7901:12;7863:52;7950:9;7937:23;7969:31;7994:5;7969:31;:::i;8035:687::-;8124:6;8132;8140;8148;8201:2;8189:9;8180:7;8176:23;8172:32;8169:52;;;8217:1;8214;8207:12;8169:52;8256:9;8243:23;8275:31;8300:5;8275:31;:::i;:::-;8325:5;-1:-1:-1;8381:2:120;8366:18;;8353:32;8408:18;8397:30;;8394:50;;;8440:1;8437;8430:12;8394:50;8479:59;8530:7;8521:6;8510:9;8506:22;8479:59;:::i;:::-;8557:8;;-1:-1:-1;8453:85:120;-1:-1:-1;;8644:2:120;8629:18;;8616:32;8657:33;8616:32;8657:33;:::i;8727:273::-;8912:6;8904;8899:3;8886:33;8868:3;8938:16;;8963:13;;;8938:16;8727:273;-1:-1:-1;8727:273:120:o;9760:251::-;9830:6;9883:2;9871:9;9862:7;9858:23;9854:32;9851:52;;;9899:1;9896;9889:12;9851:52;9931:9;9925:16;9950:31;9975:5;9950:31;:::i;11041:127::-;11102:10;11097:3;11093:20;11090:1;11083:31;11133:4;11130:1;11123:15;11157:4;11154:1;11147:15;11173:168;11213:7;11279:1;11275;11271:6;11267:14;11264:1;11261:21;11256:1;11249:9;11242:17;11238:45;11235:71;;;11286:18;;:::i;:::-;-1:-1:-1;11326:9:120;;11173:168::o;11346:163::-;11424:13;;11477:6;11466:18;;11456:29;;11446:57;;11499:1;11496;11489:12;11514:164;11590:13;;11639;;11632:21;11622:32;;11612:60;;11668:1;11665;11658:12;11683:871;11797:6;11805;11813;11821;11829;11837;11845;11898:3;11886:9;11877:7;11873:23;11869:33;11866:53;;;11915:1;11912;11905:12;11866:53;11947:9;11941:16;11966:31;11991:5;11966:31;:::i;:::-;12066:2;12051:18;;12045:25;12016:5;;-1:-1:-1;12079:31:120;12045:25;12079:31;:::i;:::-;12129:7;-1:-1:-1;12155:48:120;12199:2;12184:18;;12155:48;:::i;:::-;12145:58;;12222:48;12266:2;12255:9;12251:18;12222:48;:::i;:::-;12212:58;;12289:49;12333:3;12322:9;12318:19;12289:49;:::i;:::-;12279:59;;12383:3;12372:9;12368:19;12362:26;12432:4;12423:7;12419:18;12410:7;12407:31;12397:59;;12452:1;12449;12442:12;12397:59;12475:7;-1:-1:-1;12501:47:120;12543:3;12528:19;;12501:47;:::i;:::-;12491:57;;11683:871;;;;;;;;;;:::o;13084:164::-;13161:13;;13214:1;13203:20;;;13193:31;;13183:59;;13238:1;13235;13228:12;13253:544;13344:6;13352;13360;13368;13421:3;13409:9;13400:7;13396:23;13392:33;13389:53;;;13438:1;13435;13428:12;13389:53;13470:9;13464:16;13489:30;13513:5;13489:30;:::i;:::-;13538:5;-1:-1:-1;13562:47:120;13605:2;13590:18;;13562:47;:::i;:::-;13552:57;;13654:2;13643:9;13639:18;13633:25;13667:33;13692:7;13667:33;:::i;:::-;13719:7;-1:-1:-1;13745:46:120;13787:2;13772:18;;13745:46;:::i;:::-;13735:56;;13253:544;;;;;;;:::o;13802:251::-;13872:6;13925:2;13913:9;13904:7;13900:23;13896:32;13893:52;;;13941:1;13938;13931:12;13893:52;13973:9;13967:16;13992:31;14017:5;13992:31;:::i;14058:128::-;14098:3;14129:1;14125:6;14122:1;14119:13;14116:39;;;14135:18;;:::i;:::-;-1:-1:-1;14171:9:120;;14058:128::o;14191:125::-;14231:4;14259:1;14256;14253:8;14250:34;;;14264:18;;:::i;:::-;-1:-1:-1;14301:9:120;;14191:125::o;14321:127::-;14382:10;14377:3;14373:20;14370:1;14363:31;14413:4;14410:1;14403:15;14437:4;14434:1;14427:15;14453:112;14485:1;14511;14501:35;;14516:18;;:::i;:::-;-1:-1:-1;14550:9:120;;14453:112::o;14901:221::-;14940:4;14969:10;15029;;;;14999;;15051:12;;;15048:38;;;15066:18;;:::i;:::-;15103:13;;14901:221;-1:-1:-1;;;14901:221:120:o;15127:359::-;15165:4;15209:1;15206;15195:16;15245:1;15242;15231:16;15275:1;15270:3;15266:11;15341:3;15322:16;15318:21;15314:31;15309:3;15305:41;15300:2;15293:10;15289:58;15286:84;;;15350:18;;:::i;:::-;15421:3;15403:16;15399:26;15394:3;15390:36;15386:2;15382:45;15379:71;;;15430:18;;:::i;:::-;-1:-1:-1;15467:13:120;;;15127:359;-1:-1:-1;;;15127:359:120:o;15491:284::-;15529:1;15570;15567;15556:16;15606:1;15603;15592:16;15627:3;15617:37;;15634:18;;:::i;:::-;-1:-1:-1;;15670:30:120;;-1:-1:-1;;15702:15:120;;15666:52;15663:78;;;15721:18;;:::i;:::-;15755:14;;;15491:284;-1:-1:-1;;;15491:284:120:o;15780:231::-;15820:4;-1:-1:-1;;;;;15918:10:120;;;;15888;;15940:12;;;15937:38;;;15955:18;;:::i;16016:272::-;16056:7;-1:-1:-1;;;;;16127:10:120;;;16157;;;16190:11;;16183:19;16212:12;;;16204:21;;16179:47;16176:73;;;16229:18;;:::i;:::-;16269:13;;16016:272;-1:-1:-1;;;;16016:272:120:o;16293:201::-;16333:1;-1:-1:-1;;;;;16398:10:120;;;;16417:37;;16434:18;;:::i;:::-;16472:10;;16468:20;;;;;16293:201;-1:-1:-1;;16293:201:120:o;16829:127::-;16890:10;16885:3;16881:20;16878:1;16871:31;16921:4;16918:1;16911:15;16945:4;16942:1;16935:15;16961:647;17130:2;17182:21;;;17252:13;;17155:18;;;17274:22;;;17101:4;;17130:2;17353:15;;;;17327:2;17312:18;;;17101:4;17396:186;17410:6;17407:1;17404:13;17396:186;;;17475:13;;17490:10;17471:30;17459:43;;17557:15;;;;17522:12;;;;17432:1;17425:9;17396:186;;;-1:-1:-1;17599:3:120;;16961:647;-1:-1:-1;;;;;;16961:647:120:o;17613:181::-;17671:4;17704:18;17696:6;17693:30;17690:56;;;17726:18;;:::i;:::-;-1:-1:-1;17771:1:120;17767:14;17783:4;17763:25;;17613:181::o;17799:732::-;17864:5;17917:3;17910:4;17902:6;17898:17;17894:27;17884:55;;17935:1;17932;17925:12;17884:55;17964:6;17958:13;17990:4;18014:58;18030:41;18068:2;18030:41;:::i;:::-;18014:58;:::i;:::-;18106:15;;;18192:1;18188:10;;;;18176:23;;18172:32;;;18137:12;;;;18216:15;;;18213:35;;;18244:1;18241;18234:12;18213:35;18280:2;18272:6;18268:15;18292:210;18308:6;18303:3;18300:15;18292:210;;;18381:3;18375:10;18398:31;18423:5;18398:31;:::i;:::-;18442:18;;18480:12;;;;18325;;18292:210;;;-1:-1:-1;18520:5:120;17799:732;-1:-1:-1;;;;;;17799:732:120:o;18536:1152::-;18663:6;18671;18724:2;18712:9;18703:7;18699:23;18695:32;18692:52;;;18740:1;18737;18730:12;18692:52;18773:9;18767:16;18802:18;18843:2;18835:6;18832:14;18829:34;;;18859:1;18856;18849:12;18829:34;18897:6;18886:9;18882:22;18872:32;;18942:7;18935:4;18931:2;18927:13;18923:27;18913:55;;18964:1;18961;18954:12;18913:55;18993:2;18987:9;19015:4;19039:58;19055:41;19093:2;19055:41;:::i;19039:58::-;19131:15;;;19213:1;19209:10;;;;19201:19;;19197:28;;;19162:12;;;;19237:19;;;19234:39;;;19269:1;19266;19259:12;19234:39;19293:11;;;;19313:157;19329:6;19324:3;19321:15;19313:157;;;19395:32;19423:3;19395:32;:::i;:::-;19383:45;;19346:12;;;;19448;;;;19313:157;;;19525:18;;;19519:25;19489:5;;-1:-1:-1;19519:25:120;;-1:-1:-1;;;19556:16:120;;;19553:36;;;19585:1;19582;19575:12;19553:36;;19608:74;19674:7;19663:8;19652:9;19648:24;19608:74;:::i;:::-;19598:84;;;18536:1152;;;;;:::o;19693:166::-;19723:1;19764;19761;19750:16;19785:3;19775:37;;19792:18;;:::i;:::-;19849:3;19845:1;19842;19831:16;19826:27;19821:32;;;19693:166;;;;:::o;19864:192::-;19901:3;19948:5;19945:1;19934:20;19982:7;19978:12;19969:7;19966:25;19963:51;;;19994:18;;:::i;:::-;-1:-1:-1;;20030:20:120;;19864:192;-1:-1:-1;;19864:192:120:o","linkReferences":{},"immutableReferences":{"37611":[{"start":718,"length":32},{"start":874,"length":32},{"start":1500,"length":32},{"start":1576,"length":32},{"start":1710,"length":32},{"start":4767,"length":32},{"start":4820,"length":32}],"37613":[{"start":605,"length":32},{"start":1359,"length":32},{"start":1921,"length":32}]}},"methodIdentifiers":{"USDC()":"89a30271","WETH()":"ad5c4648","assetToAsset(address,uint256,address,uint256)":"7c661949","assetToEth(address,uint256,uint256)":"a6fe34c6","defaultTWAPPeriod()":"b8791ee2","ethToAsset(uint256,address,uint256)":"0013b4fc","fetchCurrentTicks(address,uint32)":"6a3b312a","getPoolForRoute(address,address)":"90a3ad8a","getPrice(string,uint256)":"2ef3accc","getQuoteAtTick(address,uint128,address,int24)":"57fa59eb","getQuoteCrossingTicksThroughWeth(address,uint128,address,int24,int24)":"8f5dab9a","isTokenSupported(string)":"0d3652ec","overriddenPoolForRoute(bytes32)":"01276acf","owner()":"8da5cb5b","removeToken(string)":"1f455922","renounceOwnership()":"715018a6","setDefaultTWAPPeriod(uint256)":"d45bd6b1","setUSDCPoolForToken(address,string,address)":"feefb563","tokenIDToAddress(string)":"ef25868b","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_usdc\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultTWAPPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"PriceAggregatorUniV3_NoPoolFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"T\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"USDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_twapPeriod\",\"type\":\"uint256\"}],\"name\":\"assetToAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_twapPeriod\",\"type\":\"uint256\"}],\"name\":\"assetToEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTWAPPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ethAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_twapPeriod\",\"type\":\"uint256\"}],\"name\":\"ethToAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_twapPeriod\",\"type\":\"uint32\"}],\"name\":\"fetchCurrentTicks\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"spotTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"twapTick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenB\",\"type\":\"address\"}],\"name\":\"getPoolForRoute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_amountIn\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"_tick\",\"type\":\"int24\"}],\"name\":\"getQuoteAtTick\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_amountIn\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"_tick1\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"_tick2\",\"type\":\"int24\"}],\"name\":\"getQuoteCrossingTicksThroughWeth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"overriddenPoolForRoute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenID\",\"type\":\"string\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_twapPeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultTWAPPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenA\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_tokenID\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"setUSDCPoolForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"tokenIDToAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"assetToAsset(address,uint256,address,uint256)\":{\"params\":{\"amountIn\":\"Amount of tokenIn to be converted\",\"tokenIn\":\"Address of an ERC20 token contract to be converted\",\"tokenOut\":\"Address of an ERC20 token contract to convert into\",\"twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate, if applicable\"},\"returns\":{\"amountOut\":\"Amount of tokenOut received for amountIn of tokenIn\"}},\"assetToEth(address,uint256,uint256)\":{\"params\":{\"_amountIn\":\"Amount of tokenIn to be converted\",\"_tokenIn\":\"Address of an ERC20 token contract to be converted\",\"_twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate\"},\"returns\":{\"ethAmountOut\":\"Amount of ETH received for amountIn of tokenIn\"}},\"ethToAsset(uint256,address,uint256)\":{\"params\":{\"_ethAmountIn\":\"Amount of ETH to be converted\",\"_tokenOut\":\"Address of an ERC20 token contract to convert into\",\"_twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate\"},\"returns\":{\"amountOut\":\"Amount of tokenOut received for ethAmountIn of ETH\"}},\"fetchCurrentTicks(address,uint32)\":{\"params\":{\"_pool\":\"Address of a Uniswap V3 pool\",\"_twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate\"},\"returns\":{\"spotTick\":\"The pool's current \\\"spot\\\" tick\",\"twapTick\":\"The twap tick for the last _twapPeriod seconds\"}},\"getPoolForRoute(address,address)\":{\"params\":{\"_tokenA\":\"Address of an ERC20 token contract\",\"_tokenB\":\"Address of another ERC20 token contract\"},\"returns\":{\"pool\":\"Address of a Uniswap V3 pool constructed with _tokenA and _tokenB\"}},\"getPrice(string,uint256)\":{\"params\":{\"amountIn\":\"Amount of token to be converted\",\"tokenID\":\"Identifier of the token\"},\"returns\":{\"_0\":\"price of the token in USDC\"}},\"getQuoteAtTick(address,uint128,address,int24)\":{\"params\":{\"_amountIn\":\"Amount of tokenIn to be converted\",\"_tick\":\"Tick value representing conversion ratio between _tokenIn and _tokenOut\",\"_tokenIn\":\"Address of an ERC20 token contract to be converted\",\"_tokenOut\":\"Address of an ERC20 token contract to convert into\"},\"returns\":{\"amountOut\":\"Amount of _tokenOut received for _amountIn of _tokenIn\"}},\"getQuoteCrossingTicksThroughWeth(address,uint128,address,int24,int24)\":{\"params\":{\"_amountIn\":\"Amount of tokenIn to be converted\",\"_tick1\":\"First tick value representing conversion ratio between _tokenIn and ETH\",\"_tick2\":\"Second tick value representing conversion ratio between ETH and _tokenOut\",\"_tokenIn\":\"Address of an ERC20 token contract to be converted\",\"_tokenOut\":\"Address of an ERC20 token contract to convert into\"},\"returns\":{\"amountOut\":\"Amount of _tokenOut received for _amountIn of _tokenIn\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeToken(string)\":{\"params\":{\"_tokenID\":\"Identifier of the token\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setDefaultTWAPPeriod(uint256)\":{\"params\":{\"_twapPeriod\":\"Number of seconds in the past to consider for the TWAP rate\"}},\"setUSDCPoolForToken(address,string,address)\":{\"details\":\"it can be reset by using address(0) for _pool\",\"params\":{\"_pool\":\"Address of a Uniswap V3 pool constructed with _tokenA and _tokenB\",\"_tokenA\":\"Address of an ERC20 token contract\",\"_tokenID\":\"tokenID for ERC20 token (can be same as symbol)\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"isTokenSupported\":{\"params\":{\"tokenID\":\"Identifier of the token\"},\"return\":\"true if token is supported\",\"returns\":{\"_0\":\"true if token is supported\"}}},\"title\":\"PriceAggregatorUniV3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assetToAsset(address,uint256,address,uint256)\":{\"notice\":\"Given a token and its amount, return the equivalent value in another token\"},\"assetToEth(address,uint256,uint256)\":{\"notice\":\"Given a token and its amount, return the equivalent value in ETH\"},\"ethToAsset(uint256,address,uint256)\":{\"notice\":\"Given an amount of ETH, return the equivalent value in another token\"},\"fetchCurrentTicks(address,uint32)\":{\"notice\":\"Fetch a Uniswap V3 pool's current \\\"spot\\\" and TWAP tick values\"},\"getPoolForRoute(address,address)\":{\"notice\":\"Fetch the Uniswap V3 pool to be queried for a tokenA:tokenB route\"},\"getPrice(string,uint256)\":{\"notice\":\"Given a token, return the price of the token\"},\"getQuoteAtTick(address,uint128,address,int24)\":{\"notice\":\"Given a tick and a token amount, calculates the amount of token received in exchange\"},\"getQuoteCrossingTicksThroughWeth(address,uint128,address,int24,int24)\":{\"notice\":\"Similar to getQuoteAtTick() but calculates the amount of token received in exchange by first adjusting into ETH (ie. when a route goes through an intermediary pool with ETH)\"},\"isTokenSupported(string)\":{\"notice\":\"is token supported\"},\"removeToken(string)\":{\"notice\":\"Remove a token from the list of supported tokens\"},\"setDefaultTWAPPeriod(uint256)\":{\"notice\":\"Set the default TWAP period to be used for price queries\"},\"setUSDCPoolForToken(address,string,address)\":{\"notice\":\"Set the Uniswap V3 pool queried on a tokenA:usdc route\"}},\"notice\":\"PriceAggregatorUniV3 sources prices from Uniswap V3 contracts. Provides the minimum output between an asset's \\\"spot\\\" price and TWAP from the last n seconds.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PriceAggregatorUniV3.sol\":\"PriceAggregatorUniV3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/utils/SafeCast.sol\":{\"keccak256\":\"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650\",\"dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df\",\"dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E\"]},\"src/PriceAggregatorUniV3.sol\":{\"keccak256\":\"0x0424fc4b6c7de9109aeafa4b76852d8dfc8ad438356c51fa3e60f3ca551df16a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b118d90d534ce8605e15306f99997def0956c3616e20ee7758b9878f6e401416\",\"dweb:/ipfs/QmSrBW1e3SNHrMpjyAyJzveEjSPQk68SwhsbRPtuBmSST6\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"uint256","name":"_defaultTWAPPeriod","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"type":"error","name":"PriceAggregatorUniV3_NoPoolFound"},{"inputs":[],"type":"error","name":"T"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"uint256","name":"_twapPeriod","type":"uint256"}],"stateMutability":"view","type":"function","name":"assetToAsset","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"uint256","name":"_twapPeriod","type":"uint256"}],"stateMutability":"view","type":"function","name":"assetToEth","outputs":[{"internalType":"uint256","name":"ethAmountOut","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTWAPPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_ethAmountIn","type":"uint256"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"uint256","name":"_twapPeriod","type":"uint256"}],"stateMutability":"view","type":"function","name":"ethToAsset","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"uint32","name":"_twapPeriod","type":"uint32"}],"stateMutability":"view","type":"function","name":"fetchCurrentTicks","outputs":[{"internalType":"int24","name":"spotTick","type":"int24"},{"internalType":"int24","name":"twapTick","type":"int24"}]},{"inputs":[{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolForRoute","outputs":[{"internalType":"address","name":"pool","type":"address"}]},{"inputs":[{"internalType":"string","name":"_tokenID","type":"string"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"uint128","name":"_amountIn","type":"uint128"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"int24","name":"_tick","type":"int24"}],"stateMutability":"pure","type":"function","name":"getQuoteAtTick","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"uint128","name":"_amountIn","type":"uint128"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"int24","name":"_tick1","type":"int24"},{"internalType":"int24","name":"_tick2","type":"int24"}],"stateMutability":"view","type":"function","name":"getQuoteCrossingTicksThroughWeth","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"overriddenPoolForRoute","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_tokenID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeToken"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"_twapPeriod","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTWAPPeriod"},{"inputs":[{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"string","name":"_tokenID","type":"string"},{"internalType":"address","name":"_pool","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setUSDCPoolForToken"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"tokenIDToAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"assetToAsset(address,uint256,address,uint256)":{"params":{"amountIn":"Amount of tokenIn to be converted","tokenIn":"Address of an ERC20 token contract to be converted","tokenOut":"Address of an ERC20 token contract to convert into","twapPeriod":"Number of seconds in the past to consider for the TWAP rate, if applicable"},"returns":{"amountOut":"Amount of tokenOut received for amountIn of tokenIn"}},"assetToEth(address,uint256,uint256)":{"params":{"_amountIn":"Amount of tokenIn to be converted","_tokenIn":"Address of an ERC20 token contract to be converted","_twapPeriod":"Number of seconds in the past to consider for the TWAP rate"},"returns":{"ethAmountOut":"Amount of ETH received for amountIn of tokenIn"}},"ethToAsset(uint256,address,uint256)":{"params":{"_ethAmountIn":"Amount of ETH to be converted","_tokenOut":"Address of an ERC20 token contract to convert into","_twapPeriod":"Number of seconds in the past to consider for the TWAP rate"},"returns":{"amountOut":"Amount of tokenOut received for ethAmountIn of ETH"}},"fetchCurrentTicks(address,uint32)":{"params":{"_pool":"Address of a Uniswap V3 pool","_twapPeriod":"Number of seconds in the past to consider for the TWAP rate"},"returns":{"spotTick":"The pool's current \"spot\" tick","twapTick":"The twap tick for the last _twapPeriod seconds"}},"getPoolForRoute(address,address)":{"params":{"_tokenA":"Address of an ERC20 token contract","_tokenB":"Address of another ERC20 token contract"},"returns":{"pool":"Address of a Uniswap V3 pool constructed with _tokenA and _tokenB"}},"getPrice(string,uint256)":{"params":{"amountIn":"Amount of token to be converted","tokenID":"Identifier of the token"},"returns":{"_0":"price of the token in USDC"}},"getQuoteAtTick(address,uint128,address,int24)":{"params":{"_amountIn":"Amount of tokenIn to be converted","_tick":"Tick value representing conversion ratio between _tokenIn and _tokenOut","_tokenIn":"Address of an ERC20 token contract to be converted","_tokenOut":"Address of an ERC20 token contract to convert into"},"returns":{"amountOut":"Amount of _tokenOut received for _amountIn of _tokenIn"}},"getQuoteCrossingTicksThroughWeth(address,uint128,address,int24,int24)":{"params":{"_amountIn":"Amount of tokenIn to be converted","_tick1":"First tick value representing conversion ratio between _tokenIn and ETH","_tick2":"Second tick value representing conversion ratio between ETH and _tokenOut","_tokenIn":"Address of an ERC20 token contract to be converted","_tokenOut":"Address of an ERC20 token contract to convert into"},"returns":{"amountOut":"Amount of _tokenOut received for _amountIn of _tokenIn"}},"owner()":{"details":"Returns the address of the current owner."},"removeToken(string)":{"params":{"_tokenID":"Identifier of the token"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setDefaultTWAPPeriod(uint256)":{"params":{"_twapPeriod":"Number of seconds in the past to consider for the TWAP rate"}},"setUSDCPoolForToken(address,string,address)":{"details":"it can be reset by using address(0) for _pool","params":{"_pool":"Address of a Uniswap V3 pool constructed with _tokenA and _tokenB","_tokenA":"Address of an ERC20 token contract","_tokenID":"tokenID for ERC20 token (can be same as symbol)"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"assetToAsset(address,uint256,address,uint256)":{"notice":"Given a token and its amount, return the equivalent value in another token"},"assetToEth(address,uint256,uint256)":{"notice":"Given a token and its amount, return the equivalent value in ETH"},"ethToAsset(uint256,address,uint256)":{"notice":"Given an amount of ETH, return the equivalent value in another token"},"fetchCurrentTicks(address,uint32)":{"notice":"Fetch a Uniswap V3 pool's current \"spot\" and TWAP tick values"},"getPoolForRoute(address,address)":{"notice":"Fetch the Uniswap V3 pool to be queried for a tokenA:tokenB route"},"getPrice(string,uint256)":{"notice":"Given a token, return the price of the token"},"getQuoteAtTick(address,uint128,address,int24)":{"notice":"Given a tick and a token amount, calculates the amount of token received in exchange"},"getQuoteCrossingTicksThroughWeth(address,uint128,address,int24,int24)":{"notice":"Similar to getQuoteAtTick() but calculates the amount of token received in exchange by first adjusting into ETH (ie. when a route goes through an intermediary pool with ETH)"},"isTokenSupported(string)":{"notice":"is token supported"},"removeToken(string)":{"notice":"Remove a token from the list of supported tokens"},"setDefaultTWAPPeriod(uint256)":{"notice":"Set the default TWAP period to be used for price queries"},"setUSDCPoolForToken(address,string,address)":{"notice":"Set the Uniswap V3 pool queried on a tokenA:usdc route"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PriceAggregatorUniV3.sol":"PriceAggregatorUniV3"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/utils/SafeCast.sol":{"keccak256":"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21","urls":["bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650","dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy"],"license":"BUSL-1.1"},"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968","urls":["bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e","dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"keccak256":"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b","urls":["bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa","dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43","urls":["bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea","dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/libraries/FullMath.sol":{"keccak256":"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645","urls":["bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125","dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd"],"license":"MIT"},"lib/v3-core/contracts/libraries/TickMath.sol":{"keccak256":"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129","urls":["bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c","dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/OracleLibrary.sol":{"keccak256":"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b","urls":["bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53","dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/PoolAddress.sol":{"keccak256":"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f","urls":["bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df","dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E"],"license":"GPL-2.0-or-later"},"src/PriceAggregatorUniV3.sol":{"keccak256":"0x0424fc4b6c7de9109aeafa4b76852d8dfc8ad438356c51fa3e60f3ca551df16a","urls":["bzz-raw://b118d90d534ce8605e15306f99997def0956c3616e20ee7758b9878f6e401416","dweb:/ipfs/QmSrBW1e3SNHrMpjyAyJzveEjSPQk68SwhsbRPtuBmSST6"],"license":"BUSL-1.1"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"}},"version":1},"id":70} \ No newline at end of file diff --git a/out/PriceAggregatorUniV3.t.sol/OwnershipPriceAggregatorUniV3Test.json b/out/PriceAggregatorUniV3.t.sol/OwnershipPriceAggregatorUniV3Test.json new file mode 100644 index 00000000..4ed5350f --- /dev/null +++ b/out/PriceAggregatorUniV3.t.sol/OwnershipPriceAggregatorUniV3Test.json @@ -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":"testOwnerCanTransferOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerIsInitializedFromConstructor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAccountCannotTransferOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506135588061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa914610171578063ba414fa614610179578063e20c9f7114610191578063fa7626d41461019957600080fd5b806385226c811461014c578063916a17c61461016157806397418e451461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f578063420a101e1461012757806366d9a9a01461012f5780638108c0131461014457600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101a6565b005b6101016102f9565b60405161010e9190610eec565b60405180910390f35b61010161035b565b6101016103bb565b6100f761041b565b61013761056e565b60405161010e9190610f39565b6100f761065d565b61015461079b565b60405161010e9190611048565b61013761086b565b6100f7610951565b6101546109db565b610181610aab565b604051901515815260200161010e565b610101610bd6565b6000546101819060ff1681565b6101cc6040518060400160405280600581526020016437bbb732b960d91b815250610c36565b601b80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152637573646360e01b602082015261021090610c36565b601c80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152630eecae8d60e31b602082015261025490610c36565b601d80546001600160a01b0319166001600160a01b039283169081179091556005601e819055601b54601c546040519185169416919061029390610ede565b6001600160a01b0394851681529284166020840152921660408201526060810191909152608001604051809103906000f0801580156102d6573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561035157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610333575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610351576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610333575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610351576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610333575050505050905090565b601f54601b5460405163ca669fa760e01b81526001600160a01b039182166004820152911690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505060405163f2fde38b60e01b8152602160048201526001600160a01b038416925063f2fde38b9150602401600060405180830381600087803b1580156104d457600080fd5b505af11580156104e8573d6000803e3d6000fd5b5050505061056b816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055191906110aa565b6001600160a01b031660216001600160a01b031614610c48565b50565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156106545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561063c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105fe5790505b50505050508152505081526020019060010190610592565b50505050905090565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106bb57600080fd5b505af11580156106cf573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561072057600080fd5b505af1158015610734573d6000803e3d6000fd5b5050601f5460405163f2fde38b60e01b8152602160048201526001600160a01b03909116925082915063f2fde38b90602401600060405180830381600087803b15801561078057600080fd5b505af1158015610794573d6000803e3d6000fd5b5050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156106545783829060005260206000200180546107de906110da565b80601f016020809104026020016040519081016040528092919081815260200182805461080a906110da565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050815260200190600101906107bf565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156106545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561093957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108fb5790505b5050505050815250508152602001906001019061088f565b601f5460408051638da5cb5b60e01b815290516001600160a01b039092169161056b918391638da5cb5b916004808201926020929091908290030181865afa1580156109a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c591906110aa565b601b546001600160a01b03908116911614610c48565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015610654578382906000526020600020018054610a1e906110da565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a906110da565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815260200190600101906109ff565b60008054610100900460ff1615610acb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610bd15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610b59917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611115565b60408051601f1981840301815290829052610b7391611146565b6000604051808303816000865af19150503d8060008114610bb0576040519150601f19603f3d011682016040523d82523d6000602084013e610bb5565b606091505b5091505080806020019051810190610bcd9190611162565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610351576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610333575050505050905090565b6000610c4182610cbc565b5092915050565b8061056b577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610cac9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161056b610dd2565b60008082604051602001610cd09190611146565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5f91906110aa565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890610d9b9085908790600401611184565b600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b50505050915091565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610ecd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610e6c9291602001611115565b60408051601f1981840301815290829052610e8691611146565b6000604051808303816000865af19150503d8060008114610ec3576040519150601f19603f3d011682016040523d82523d6000602084013e610ec8565b606091505b505050505b6000805461ff001916610100179055565b61237280620011b183390190565b6020808252825182820181905260009190848201906040850190845b81811015610f2d5783516001600160a01b031683529284019291840191600101610f08565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610fdd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610fc85783516001600160e01b0319168252928b019260019290920191908b0190610f9e565b50978a01979550505091870191600101610f61565b50919998505050505050505050565b60005b83811015611007578181015183820152602001610fef565b83811115611016576000848401525b50505050565b60008151808452611034816020860160208601610fec565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561109d57603f1988860301845261108b85835161101c565b9450928501929085019060010161106f565b5092979650505050505050565b6000602082840312156110bc57600080fd5b81516001600160a01b03811681146110d357600080fd5b9392505050565b600181811c908216806110ee57607f821691505b6020821081141561110f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090611138816004850160208701610fec565b919091016004019392505050565b60008251611158818460208701610fec565b9190910192915050565b60006020828403121561117457600080fd5b815180151581146110d357600080fd5b6001600160a01b03831681526040602082018190526000906111a89083018461101c565b94935050505056fe60c06040523480156200001157600080fd5b5060405162002372380380620023728339810160408190526200003491620000d4565b6200003f3362000067565b6200004a8462000067565b6001600160a01b03928316608052911660a0526001555062000126565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000cf57600080fd5b919050565b60008060008060808587031215620000eb57600080fd5b620000f685620000b7565b93506200010660208601620000b7565b92506200011660408601620000b7565b6060959095015193969295505050565b60805160a0516121ee620001846000396000818161025d0152818161054f01526107810152600081816102ce0152818161036a015281816105dc01528181610628015281816106ae0152818161129f01526112d401526121ee6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063b8791ee211610071578063b8791ee2146102f0578063d45bd6b1146102f9578063ef25868b1461030c578063f2fde38b14610340578063feefb5631461035357600080fd5b80638da5cb5b1461027f5780638f5dab9a1461029057806390a3ad8a146102a3578063a6fe34c6146102b6578063ad5c4648146102c957600080fd5b806357fa59eb116100f457806357fa59eb146101fd5780636a3b312a14610210578063715018a61461023d5780637c6619491461024557806389a302711461025857600080fd5b806213b4fc1461013057806301276acf146101565780630d3652ec146101975780631f455922146101d55780632ef3accc146101ea575b600080fd5b61014361013e366004611833565b610366565b6040519081526020015b60405180910390f35b61017f61016436600461186b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014d565b6101c56101a53660046118cb565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161014d565b6101e86101e33660046119a9565b6103b8565b005b6101436101f83660046119eb565b6104a7565b61014361020b366004611a5b565b61057f565b61022361021e366004611ac9565b610598565b60408051600293840b81529190920b60208201520161014d565b6101e86105c4565b610143610253366004611b02565b6105d8565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661017f565b61014361029e366004611b4a565b610677565b61017f6102b1366004611bbb565b610699565b6101436102c4366004611be9565b6106aa565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b61014360015481565b6101e861030736600461186b565b6106eb565b61017f61031a3660046118cb565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6101e861034e366004611c1e565b6106f8565b6101e8610361366004611c3b565b610771565b60007f00000000000000000000000000000000000000000000000000000000000000008161039d6103988387846109c0565b610a2b565b90506103ac8287878488610a7e565b925050505b9392505050565b6103c0610b18565b600382826040516103d2929190611c98565b9081526040519081900360200190205460ff1661042c5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064015b60405180910390fd5b600060038383604051610440929190611c98565b908152604051908190036020018120805492151560ff19909316929092179091556000906002906104749085908590611c98565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000600384846040516104bb929190611c98565b9081526040519081900360200190205460ff166105105760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610423565b600060028585604051610524929190611c98565b908152602001604051809103902060009054906101000a90046001600160a01b0316905061057681847f00000000000000000000000000000000000000000000000000000000000000006001546105d8565b95945050505050565b600061058d82858786610b72565b90505b949350505050565b6000806000806105a786610c80565b90945091506105b68686610f8c565b509396939550929350505050565b6105cc610b18565b6105d660006111d3565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156106265761061f848484610366565b9050610590565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561066b5761061f8585846106aa565b61061f85858585611223565b600061068f86866001600160801b031686868661128c565b9695505050505050565b60006103b1610398848460006109c0565b60007f0000000000000000000000000000000000000000000000000000000000000000816106dc6103988784846109c0565b90506103ac8686848488610a7e565b6106f3610b18565b600155565b610700610b18565b6001600160a01b0381166107655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610423565b61076e816111d3565b50565b610779610b18565b60006107a7857f000000000000000000000000000000000000000000000000000000000000000060006109c0565b90506001600160a01b0382161561090057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611ca8565b6001600160a01b031681600001516001600160a01b03161480156108b45750816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190611ca8565b6001600160a01b031681602001516001600160a01b0316145b6109005760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e73206f7220706f6f6c206e6f7420636f72726563740000000000006044820152606401610423565b816004600061090e84611304565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028585604051610953929190611c98565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160038585604051610999929190611c98565b908152604051908190036020019020805491151560ff199092169190911790555050505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156109fb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000610a368261134e565b90506001600160a01b038116610a795781516020830151604051634e8a64e960e01b81526001600160a01b03928316600482015291166024820152604401610423565b919050565b6000806000806000610a8f87610c80565b9094509250610aa687610aa18861137d565b610f8c565b909250905060006001600160a01b03808a16908c161015610add578260020b8560020b12610ad45782610ad6565b845b9050610af5565b8260020b8560020b13610af05782610af2565b845b90505b610b0981610b028c6113e2565b8d8c610b72565b9b9a5050505050505050505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610423565b600080610b7e8661144b565b90506001600160801b036001600160a01b03821611610c04576000610bac6001600160a01b03831680611cdb565b9050836001600160a01b0316856001600160a01b031610610be457610bdf600160c01b876001600160801b03168361176b565b610bfc565b610bfc81876001600160801b0316600160c01b61176b565b925050610c77565b6000610c236001600160a01b038316806801000000000000000061176b565b9050836001600160a01b0316856001600160a01b031610610c5b57610c56600160801b876001600160801b03168361176b565b610c73565b610c7381876001600160801b0316600160801b61176b565b9250505b50949350505050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611d1c565b5050509350935093505060018161ffff1611610d2e5760405162461bcd60e51b81526020600482015260036024820152624e454f60e81b6044820152606401610423565b60405163252c09d760e01b815261ffff83166004820152600090819081906001600160a01b038a169063252c09d790602401608060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190611dc1565b509250925092504263ffffffff168363ffffffff1614610e2d5785896001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190611e19565b97509750505050505050915091565b60008461ffff1660018661ffff168861ffff16610e4a9190611e36565b610e549190611e4e565b610e5e9190611e7b565b90506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401610e9491815260200190565b608060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed59190611dc1565b935093509350935080610f105760405162461bcd60e51b81526020600482015260036024820152624f4e4960e81b6044820152606401610423565b6000610f1c858a611e8f565b905063ffffffff8116610f2f858a611eb4565b610f399190611f04565b9b5060006020610f49858a611f42565b6001600160a01b0390811690911b90610f689063ffffffff8516611f62565b610f729190611f91565b90508c819e509e5050505050505050505050505050915091565b60008063ffffffff8316610fc75760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610423565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610ffc57610ffc611fb7565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061102b5761102b611fb7565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016110749190611fcd565b600060405180830381865afa158015611091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110b991908101906120af565b915091506000826000815181106110d2576110d2611fb7565b6020026020010151836001815181106110ed576110ed611fb7565b60200260200101516110ff9190611eb4565b905060008260008151811061111657611116611fb7565b60200260200101518360018151811061113157611131611fb7565b60200260200101516111439190611f42565b905061115563ffffffff891683611f04565b965060008260060b12801561117b575061117563ffffffff891683612172565b60060b15155b1561118e578661118a81612194565b9750505b60006111a76001600160a01b0363ffffffff8b16611f62565b90506111c4640100000000600160c01b03602084901b1682611f91565b96505050505050509250929050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123a611235878660006109c0565b61134e565b90506001600160a01b03811615611260576112588686868487610a7e565b915050610590565b604051634e8a64e960e01b81526001600160a01b03808816600483015285166024820152604401610423565b6000806112c38461129c886113e2565b897f0000000000000000000000000000000000000000000000000000000000000000610b72565b90506112f9836112d2836113e2565b7f000000000000000000000000000000000000000000000000000000000000000088610b72565b979650505050505050565b8051602091820151604080516bffffffffffffffffffffffff19606094851b8116828701529290931b90911660348301528051808303602801815260489092019052805191012090565b60006004600061135d84611304565b81526020810191909152604001600020546001600160a01b031692915050565b8063ffffffff81168114610a795760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610423565b806001600160801b0381168114610a795760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610423565b60008060008360020b12611462578260020b61146a565b8260020b6000035b9050620d89e8811115611490576040516315e4079d60e11b815260040160405180910390fd5b6000600182166114a457600160801b6114b6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156114ea576ffff97272373d413259a46990580e213a0260801c5b6004821615611509576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611528576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611547576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611566576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611585576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156115a4576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156115c4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156115e4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611604576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611624576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611644576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611664576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611684576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156116a4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156116c5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156116e5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611704576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611721576b048a170391f7dc42444e8fa20260801c5b60008460020b131561174257806000198161173e5761173e611e65565b0490505b640100000000810615611756576001611759565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600014156117a5576000841161179a57600080fd5b5082900490506103b1565b8084116117b157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038116811461076e57600080fd5b60008060006060848603121561184857600080fd5b83359250602084013561185a8161181e565b929592945050506040919091013590565b60006020828403121561187d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118c3576118c3611884565b604052919050565b600060208083850312156118de57600080fd5b823567ffffffffffffffff808211156118f657600080fd5b818501915085601f83011261190a57600080fd5b81358181111561191c5761191c611884565b61192e601f8201601f1916850161189a565b9150808252868482850101111561194457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360208285010111156119a257600080fd5b9250929050565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611960565b90969095509350505050565b600080600060408486031215611a0057600080fd5b833567ffffffffffffffff811115611a1757600080fd5b611a2386828701611960565b909790965060209590950135949350505050565b6001600160801b038116811461076e57600080fd5b8060020b811461076e57600080fd5b60008060008060808587031215611a7157600080fd5b8435611a7c8161181e565b93506020850135611a8c81611a37565b92506040850135611a9c8161181e565b91506060850135611aac81611a4c565b939692955090935050565b63ffffffff8116811461076e57600080fd5b60008060408385031215611adc57600080fd5b8235611ae78161181e565b91506020830135611af781611ab7565b809150509250929050565b60008060008060808587031215611b1857600080fd5b8435611b238161181e565b9350602085013592506040850135611b3a8161181e565b9396929550929360600135925050565b600080600080600060a08688031215611b6257600080fd5b8535611b6d8161181e565b94506020860135611b7d81611a37565b93506040860135611b8d8161181e565b92506060860135611b9d81611a4c565b91506080860135611bad81611a4c565b809150509295509295909350565b60008060408385031215611bce57600080fd5b8235611bd98161181e565b91506020830135611af78161181e565b600080600060608486031215611bfe57600080fd5b8335611c098161181e565b95602085013595506040909401359392505050565b600060208284031215611c3057600080fd5b81356103b18161181e565b60008060008060608587031215611c5157600080fd5b8435611c5c8161181e565b9350602085013567ffffffffffffffff811115611c7857600080fd5b611c8487828801611960565b9094509250506040850135611aac8161181e565b8183823760009101908152919050565b600060208284031215611cba57600080fd5b81516103b18161181e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cf557611cf5611cc5565b500290565b805161ffff81168114610a7957600080fd5b80518015158114610a7957600080fd5b600080600080600080600060e0888a031215611d3757600080fd5b8751611d428161181e565b6020890151909750611d5381611a4c565b9550611d6160408901611cfa565b9450611d6f60608901611cfa565b9350611d7d60808901611cfa565b925060a088015160ff81168114611d9357600080fd5b9150611da160c08901611d0c565b905092959891949750929550565b8051600681900b8114610a7957600080fd5b60008060008060808587031215611dd757600080fd5b8451611de281611ab7565b9350611df060208601611daf565b92506040850151611e008161181e565b9150611e0e60608601611d0c565b905092959194509250565b600060208284031215611e2b57600080fd5b81516103b181611a37565b60008219821115611e4957611e49611cc5565b500190565b600082821015611e6057611e60611cc5565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e8a57611e8a611e65565b500690565b600063ffffffff83811690831681811015611eac57611eac611cc5565b039392505050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615611edf57611edf611cc5565b81667fffffffffffff018313811615611efa57611efa611cc5565b5090039392505050565b60008160060b8360060b80611f1b57611f1b611e65565b667fffffffffffff19821460001982141615611f3957611f39611cc5565b90059392505050565b60006001600160a01b0383811690831681811015611eac57611eac611cc5565b60006001600160c01b0382811684821681151582840482111615611f8857611f88611cc5565b02949350505050565b60006001600160c01b0383811680611fab57611fab611e65565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561200b57835163ffffffff1683529284019291840191600101611fe9565b50909695505050505050565b600067ffffffffffffffff82111561203157612031611884565b5060051b60200190565b600082601f83011261204c57600080fd5b8151602061206161205c83612017565b61189a565b82815260059290921b8401810191818101908684111561208057600080fd5b8286015b848110156120a45780516120978161181e565b8352918301918301612084565b509695505050505050565b600080604083850312156120c257600080fd5b825167ffffffffffffffff808211156120da57600080fd5b818501915085601f8301126120ee57600080fd5b815160206120fe61205c83612017565b82815260059290921b8401810191818101908984111561211d57600080fd5b948201945b838610156121425761213386611daf565b82529482019490820190612122565b9188015191965090935050508082111561215b57600080fd5b506121688582860161203b565b9150509250929050565b60008260060b8061218557612185611e65565b808360060b0791505092915050565b60008160020b627fffff198114156121ae576121ae611cc5565b600019019291505056fea2646970667358221220bbf12e190f519e18639783ed80d5dc10202cb112533d41caf7d427bed6867ab664736f6c634300080c0033a2646970667358221220791c2db4b23a4b6ac25d13fbfbce7cddb20eacd3db0d9590191ca2733025225964736f6c634300080c0033","sourceMap":"3662:1163:83:-:0;;;1572:26:20;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;3662:1163:83;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa914610171578063ba414fa614610179578063e20c9f7114610191578063fa7626d41461019957600080fd5b806385226c811461014c578063916a17c61461016157806397418e451461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f578063420a101e1461012757806366d9a9a01461012f5780638108c0131461014457600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101a6565b005b6101016102f9565b60405161010e9190610eec565b60405180910390f35b61010161035b565b6101016103bb565b6100f761041b565b61013761056e565b60405161010e9190610f39565b6100f761065d565b61015461079b565b60405161010e9190611048565b61013761086b565b6100f7610951565b6101546109db565b610181610aab565b604051901515815260200161010e565b610101610bd6565b6000546101819060ff1681565b6101cc6040518060400160405280600581526020016437bbb732b960d91b815250610c36565b601b80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152637573646360e01b602082015261021090610c36565b601c80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152630eecae8d60e31b602082015261025490610c36565b601d80546001600160a01b0319166001600160a01b039283169081179091556005601e819055601b54601c546040519185169416919061029390610ede565b6001600160a01b0394851681529284166020840152921660408201526060810191909152608001604051809103906000f0801580156102d6573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561035157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610333575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610351576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610333575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610351576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610333575050505050905090565b601f54601b5460405163ca669fa760e01b81526001600160a01b039182166004820152911690737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505060405163f2fde38b60e01b8152602160048201526001600160a01b038416925063f2fde38b9150602401600060405180830381600087803b1580156104d457600080fd5b505af11580156104e8573d6000803e3d6000fd5b5050505061056b816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055191906110aa565b6001600160a01b031660216001600160a01b031614610c48565b50565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156106545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561063c57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116105fe5790505b50505050508152505081526020019060010190610592565b50505050905090565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106bb57600080fd5b505af11580156106cf573d6000803e3d6000fd5b505060405163ca669fa760e01b8152602c6004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561072057600080fd5b505af1158015610734573d6000803e3d6000fd5b5050601f5460405163f2fde38b60e01b8152602160048201526001600160a01b03909116925082915063f2fde38b90602401600060405180830381600087803b15801561078057600080fd5b505af1158015610794573d6000803e3d6000fd5b5050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156106545783829060005260206000200180546107de906110da565b80601f016020809104026020016040519081016040528092919081815260200182805461080a906110da565b80156108575780601f1061082c57610100808354040283529160200191610857565b820191906000526020600020905b81548152906001019060200180831161083a57829003601f168201915b5050505050815260200190600101906107bf565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156106545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561093957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108fb5790505b5050505050815250508152602001906001019061088f565b601f5460408051638da5cb5b60e01b815290516001600160a01b039092169161056b918391638da5cb5b916004808201926020929091908290030181865afa1580156109a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c591906110aa565b601b546001600160a01b03908116911614610c48565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015610654578382906000526020600020018054610a1e906110da565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a906110da565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815260200190600101906109ff565b60008054610100900460ff1615610acb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610bd15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610b59917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611115565b60408051601f1981840301815290829052610b7391611146565b6000604051808303816000865af19150503d8060008114610bb0576040519150601f19603f3d011682016040523d82523d6000602084013e610bb5565b606091505b5091505080806020019051810190610bcd9190611162565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610351576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610333575050505050905090565b6000610c4182610cbc565b5092915050565b8061056b577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610cac9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a161056b610dd2565b60008082604051602001610cd09190611146565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5f91906110aa565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890610d9b9085908790600401611184565b600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b50505050915091565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610ecd5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610e6c9291602001611115565b60408051601f1981840301815290829052610e8691611146565b6000604051808303816000865af19150503d8060008114610ec3576040519150601f19603f3d011682016040523d82523d6000602084013e610ec8565b606091505b505050505b6000805461ff001916610100179055565b61237280620011b183390190565b6020808252825182820181905260009190848201906040850190845b81811015610f2d5783516001600160a01b031683529284019291840191600101610f08565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610fdd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015610fc85783516001600160e01b0319168252928b019260019290920191908b0190610f9e565b50978a01979550505091870191600101610f61565b50919998505050505050505050565b60005b83811015611007578181015183820152602001610fef565b83811115611016576000848401525b50505050565b60008151808452611034816020860160208601610fec565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561109d57603f1988860301845261108b85835161101c565b9450928501929085019060010161106f565b5092979650505050505050565b6000602082840312156110bc57600080fd5b81516001600160a01b03811681146110d357600080fd5b9392505050565b600181811c908216806110ee57607f821691505b6020821081141561110f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090611138816004850160208701610fec565b919091016004019392505050565b60008251611158818460208701610fec565b9190910192915050565b60006020828403121561117457600080fd5b815180151581146110d357600080fd5b6001600160a01b03831681526040602082018190526000906111a89083018461101c565b94935050505056fe60c06040523480156200001157600080fd5b5060405162002372380380620023728339810160408190526200003491620000d4565b6200003f3362000067565b6200004a8462000067565b6001600160a01b03928316608052911660a0526001555062000126565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000cf57600080fd5b919050565b60008060008060808587031215620000eb57600080fd5b620000f685620000b7565b93506200010660208601620000b7565b92506200011660408601620000b7565b6060959095015193969295505050565b60805160a0516121ee620001846000396000818161025d0152818161054f01526107810152600081816102ce0152818161036a015281816105dc01528181610628015281816106ae0152818161129f01526112d401526121ee6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063b8791ee211610071578063b8791ee2146102f0578063d45bd6b1146102f9578063ef25868b1461030c578063f2fde38b14610340578063feefb5631461035357600080fd5b80638da5cb5b1461027f5780638f5dab9a1461029057806390a3ad8a146102a3578063a6fe34c6146102b6578063ad5c4648146102c957600080fd5b806357fa59eb116100f457806357fa59eb146101fd5780636a3b312a14610210578063715018a61461023d5780637c6619491461024557806389a302711461025857600080fd5b806213b4fc1461013057806301276acf146101565780630d3652ec146101975780631f455922146101d55780632ef3accc146101ea575b600080fd5b61014361013e366004611833565b610366565b6040519081526020015b60405180910390f35b61017f61016436600461186b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014d565b6101c56101a53660046118cb565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161014d565b6101e86101e33660046119a9565b6103b8565b005b6101436101f83660046119eb565b6104a7565b61014361020b366004611a5b565b61057f565b61022361021e366004611ac9565b610598565b60408051600293840b81529190920b60208201520161014d565b6101e86105c4565b610143610253366004611b02565b6105d8565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661017f565b61014361029e366004611b4a565b610677565b61017f6102b1366004611bbb565b610699565b6101436102c4366004611be9565b6106aa565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b61014360015481565b6101e861030736600461186b565b6106eb565b61017f61031a3660046118cb565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6101e861034e366004611c1e565b6106f8565b6101e8610361366004611c3b565b610771565b60007f00000000000000000000000000000000000000000000000000000000000000008161039d6103988387846109c0565b610a2b565b90506103ac8287878488610a7e565b925050505b9392505050565b6103c0610b18565b600382826040516103d2929190611c98565b9081526040519081900360200190205460ff1661042c5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064015b60405180910390fd5b600060038383604051610440929190611c98565b908152604051908190036020018120805492151560ff19909316929092179091556000906002906104749085908590611c98565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000600384846040516104bb929190611c98565b9081526040519081900360200190205460ff166105105760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610423565b600060028585604051610524929190611c98565b908152602001604051809103902060009054906101000a90046001600160a01b0316905061057681847f00000000000000000000000000000000000000000000000000000000000000006001546105d8565b95945050505050565b600061058d82858786610b72565b90505b949350505050565b6000806000806105a786610c80565b90945091506105b68686610f8c565b509396939550929350505050565b6105cc610b18565b6105d660006111d3565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156106265761061f848484610366565b9050610590565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561066b5761061f8585846106aa565b61061f85858585611223565b600061068f86866001600160801b031686868661128c565b9695505050505050565b60006103b1610398848460006109c0565b60007f0000000000000000000000000000000000000000000000000000000000000000816106dc6103988784846109c0565b90506103ac8686848488610a7e565b6106f3610b18565b600155565b610700610b18565b6001600160a01b0381166107655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610423565b61076e816111d3565b50565b610779610b18565b60006107a7857f000000000000000000000000000000000000000000000000000000000000000060006109c0565b90506001600160a01b0382161561090057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611ca8565b6001600160a01b031681600001516001600160a01b03161480156108b45750816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190611ca8565b6001600160a01b031681602001516001600160a01b0316145b6109005760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e73206f7220706f6f6c206e6f7420636f72726563740000000000006044820152606401610423565b816004600061090e84611304565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028585604051610953929190611c98565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160038585604051610999929190611c98565b908152604051908190036020019020805491151560ff199092169190911790555050505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156109fb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000610a368261134e565b90506001600160a01b038116610a795781516020830151604051634e8a64e960e01b81526001600160a01b03928316600482015291166024820152604401610423565b919050565b6000806000806000610a8f87610c80565b9094509250610aa687610aa18861137d565b610f8c565b909250905060006001600160a01b03808a16908c161015610add578260020b8560020b12610ad45782610ad6565b845b9050610af5565b8260020b8560020b13610af05782610af2565b845b90505b610b0981610b028c6113e2565b8d8c610b72565b9b9a5050505050505050505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610423565b600080610b7e8661144b565b90506001600160801b036001600160a01b03821611610c04576000610bac6001600160a01b03831680611cdb565b9050836001600160a01b0316856001600160a01b031610610be457610bdf600160c01b876001600160801b03168361176b565b610bfc565b610bfc81876001600160801b0316600160c01b61176b565b925050610c77565b6000610c236001600160a01b038316806801000000000000000061176b565b9050836001600160a01b0316856001600160a01b031610610c5b57610c56600160801b876001600160801b03168361176b565b610c73565b610c7381876001600160801b0316600160801b61176b565b9250505b50949350505050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611d1c565b5050509350935093505060018161ffff1611610d2e5760405162461bcd60e51b81526020600482015260036024820152624e454f60e81b6044820152606401610423565b60405163252c09d760e01b815261ffff83166004820152600090819081906001600160a01b038a169063252c09d790602401608060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190611dc1565b509250925092504263ffffffff168363ffffffff1614610e2d5785896001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190611e19565b97509750505050505050915091565b60008461ffff1660018661ffff168861ffff16610e4a9190611e36565b610e549190611e4e565b610e5e9190611e7b565b90506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401610e9491815260200190565b608060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed59190611dc1565b935093509350935080610f105760405162461bcd60e51b81526020600482015260036024820152624f4e4960e81b6044820152606401610423565b6000610f1c858a611e8f565b905063ffffffff8116610f2f858a611eb4565b610f399190611f04565b9b5060006020610f49858a611f42565b6001600160a01b0390811690911b90610f689063ffffffff8516611f62565b610f729190611f91565b90508c819e509e5050505050505050505050505050915091565b60008063ffffffff8316610fc75760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610423565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610ffc57610ffc611fb7565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061102b5761102b611fb7565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016110749190611fcd565b600060405180830381865afa158015611091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110b991908101906120af565b915091506000826000815181106110d2576110d2611fb7565b6020026020010151836001815181106110ed576110ed611fb7565b60200260200101516110ff9190611eb4565b905060008260008151811061111657611116611fb7565b60200260200101518360018151811061113157611131611fb7565b60200260200101516111439190611f42565b905061115563ffffffff891683611f04565b965060008260060b12801561117b575061117563ffffffff891683612172565b60060b15155b1561118e578661118a81612194565b9750505b60006111a76001600160a01b0363ffffffff8b16611f62565b90506111c4640100000000600160c01b03602084901b1682611f91565b96505050505050509250929050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123a611235878660006109c0565b61134e565b90506001600160a01b03811615611260576112588686868487610a7e565b915050610590565b604051634e8a64e960e01b81526001600160a01b03808816600483015285166024820152604401610423565b6000806112c38461129c886113e2565b897f0000000000000000000000000000000000000000000000000000000000000000610b72565b90506112f9836112d2836113e2565b7f000000000000000000000000000000000000000000000000000000000000000088610b72565b979650505050505050565b8051602091820151604080516bffffffffffffffffffffffff19606094851b8116828701529290931b90911660348301528051808303602801815260489092019052805191012090565b60006004600061135d84611304565b81526020810191909152604001600020546001600160a01b031692915050565b8063ffffffff81168114610a795760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610423565b806001600160801b0381168114610a795760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610423565b60008060008360020b12611462578260020b61146a565b8260020b6000035b9050620d89e8811115611490576040516315e4079d60e11b815260040160405180910390fd5b6000600182166114a457600160801b6114b6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156114ea576ffff97272373d413259a46990580e213a0260801c5b6004821615611509576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611528576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611547576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611566576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611585576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156115a4576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156115c4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156115e4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611604576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611624576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611644576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611664576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611684576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156116a4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156116c5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156116e5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611704576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611721576b048a170391f7dc42444e8fa20260801c5b60008460020b131561174257806000198161173e5761173e611e65565b0490505b640100000000810615611756576001611759565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600014156117a5576000841161179a57600080fd5b5082900490506103b1565b8084116117b157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038116811461076e57600080fd5b60008060006060848603121561184857600080fd5b83359250602084013561185a8161181e565b929592945050506040919091013590565b60006020828403121561187d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118c3576118c3611884565b604052919050565b600060208083850312156118de57600080fd5b823567ffffffffffffffff808211156118f657600080fd5b818501915085601f83011261190a57600080fd5b81358181111561191c5761191c611884565b61192e601f8201601f1916850161189a565b9150808252868482850101111561194457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360208285010111156119a257600080fd5b9250929050565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611960565b90969095509350505050565b600080600060408486031215611a0057600080fd5b833567ffffffffffffffff811115611a1757600080fd5b611a2386828701611960565b909790965060209590950135949350505050565b6001600160801b038116811461076e57600080fd5b8060020b811461076e57600080fd5b60008060008060808587031215611a7157600080fd5b8435611a7c8161181e565b93506020850135611a8c81611a37565b92506040850135611a9c8161181e565b91506060850135611aac81611a4c565b939692955090935050565b63ffffffff8116811461076e57600080fd5b60008060408385031215611adc57600080fd5b8235611ae78161181e565b91506020830135611af781611ab7565b809150509250929050565b60008060008060808587031215611b1857600080fd5b8435611b238161181e565b9350602085013592506040850135611b3a8161181e565b9396929550929360600135925050565b600080600080600060a08688031215611b6257600080fd5b8535611b6d8161181e565b94506020860135611b7d81611a37565b93506040860135611b8d8161181e565b92506060860135611b9d81611a4c565b91506080860135611bad81611a4c565b809150509295509295909350565b60008060408385031215611bce57600080fd5b8235611bd98161181e565b91506020830135611af78161181e565b600080600060608486031215611bfe57600080fd5b8335611c098161181e565b95602085013595506040909401359392505050565b600060208284031215611c3057600080fd5b81356103b18161181e565b60008060008060608587031215611c5157600080fd5b8435611c5c8161181e565b9350602085013567ffffffffffffffff811115611c7857600080fd5b611c8487828801611960565b9094509250506040850135611aac8161181e565b8183823760009101908152919050565b600060208284031215611cba57600080fd5b81516103b18161181e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cf557611cf5611cc5565b500290565b805161ffff81168114610a7957600080fd5b80518015158114610a7957600080fd5b600080600080600080600060e0888a031215611d3757600080fd5b8751611d428161181e565b6020890151909750611d5381611a4c565b9550611d6160408901611cfa565b9450611d6f60608901611cfa565b9350611d7d60808901611cfa565b925060a088015160ff81168114611d9357600080fd5b9150611da160c08901611d0c565b905092959891949750929550565b8051600681900b8114610a7957600080fd5b60008060008060808587031215611dd757600080fd5b8451611de281611ab7565b9350611df060208601611daf565b92506040850151611e008161181e565b9150611e0e60608601611d0c565b905092959194509250565b600060208284031215611e2b57600080fd5b81516103b181611a37565b60008219821115611e4957611e49611cc5565b500190565b600082821015611e6057611e60611cc5565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e8a57611e8a611e65565b500690565b600063ffffffff83811690831681811015611eac57611eac611cc5565b039392505050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615611edf57611edf611cc5565b81667fffffffffffff018313811615611efa57611efa611cc5565b5090039392505050565b60008160060b8360060b80611f1b57611f1b611e65565b667fffffffffffff19821460001982141615611f3957611f39611cc5565b90059392505050565b60006001600160a01b0383811690831681811015611eac57611eac611cc5565b60006001600160c01b0382811684821681151582840482111615611f8857611f88611cc5565b02949350505050565b60006001600160c01b0383811680611fab57611fab611e65565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561200b57835163ffffffff1683529284019291840191600101611fe9565b50909695505050505050565b600067ffffffffffffffff82111561203157612031611884565b5060051b60200190565b600082601f83011261204c57600080fd5b8151602061206161205c83612017565b61189a565b82815260059290921b8401810191818101908684111561208057600080fd5b8286015b848110156120a45780516120978161181e565b8352918301918301612084565b509695505050505050565b600080604083850312156120c257600080fd5b825167ffffffffffffffff808211156120da57600080fd5b818501915085601f8301126120ee57600080fd5b815160206120fe61205c83612017565b82815260059290921b8401810191818101908984111561211d57600080fd5b948201945b838610156121425761213386611daf565b82529482019490820190612122565b9188015191965090935050508082111561215b57600080fd5b506121688582860161203b565b9150509250929050565b60008260060b8061218557612185611e65565b808360060b0791505092915050565b60008160020b627fffff198114156121ae576121ae611cc5565b600019019291505056fea2646970667358221220bbf12e190f519e18639783ed80d5dc10202cb112533d41caf7d427bed6867ab664736f6c634300080c0033a2646970667358221220791c2db4b23a4b6ac25d13fbfbce7cddb20eacd3db0d9590191ca2733025225964736f6c634300080c0033","sourceMap":"3662:1163:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3850:259;;;:::i;:::-;;2161:134:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;4559:264:83:-;;;:::i;2447:178:26:-;;;:::i;:::-;;;;;;;:::i;4306:247:83:-;;;:::i;2301:140:26:-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;4115:185:83:-;;;:::i;1866:141:26:-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3750:14:120;;3743:22;3725:41;;3713:2;3698:18;1819:584:20;3585:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;3850:259:83;3893:17;;;;;;;;;;;;;;-1:-1:-1;;;3893:17:83;;;:8;:17::i;:::-;3884:6;:26;;-1:-1:-1;;;;;;3884:26:83;-1:-1:-1;;;;;3884:26:83;;;;;;;;;;3928:16;;;;;;;;;;;;-1:-1:-1;;;3928:16:83;;;;;;:8;:16::i;:::-;3920:5;:24;;-1:-1:-1;;;;;;3920:24:83;-1:-1:-1;;;;;3920:24:83;;;;;;;;;;3962:16;;;;;;;;;;;;-1:-1:-1;;;3962:16:83;;;;;;:8;:16::i;:::-;3954:5;:24;;-1:-1:-1;;;;;;3954:24:83;-1:-1:-1;;;;;3954:24:83;;;;;;;;;4009:1;3988:18;:22;;;4061:6;;4076:5;;4036:66;;4061:6;;;;4076:5;;4009:1;4036:66;;;:::i;:::-;-1:-1:-1;;;;;4064:15:120;;;4046:34;;4116:15;;;4111:2;4096:18;;4089:43;4168:15;;4163:2;4148:18;;4141:43;4215:2;4200:18;;4193:34;;;;3995:3;3980:19;4036:66:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4020:13:83;:82;;-1:-1:-1;;;;;;4020:82:83;-1:-1:-1;;;;;4020:82:83;;;;;;;;;;3850:259::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;4559:264:83:-;4659:13;;4693:6;;4684:16;;-1:-1:-1;;;4684:16:83;;-1:-1:-1;;;;;4693:6:83;;;4684:16;;;4384:51:120;4659:13:83;;;4684:8;;;;4357:18:120;;4684:16:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4710:46:83;;-1:-1:-1;;;4710:46:83;;4752:2;4710:46;;;4384:51:120;-1:-1:-1;;;;;4710:33:83;;;-1:-1:-1;4710:33:83;;-1:-1:-1;4357:18:120;;4710:46:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4766:50;4792:15;-1:-1:-1;;;;;4792:21:83;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4777:38:83;4785:2;-1:-1:-1;;;;;4777:38:83;;4766:10;:50::i;:::-;4607:216;4559:264::o;2447:178:26:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;4306:247:83:-;317:28:21;309:37;;-1:-1:-1;;;;;4375:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4402:21:83;;-1:-1:-1;;;4402:21:83;;4419:2;4402:21;;;4384:51:120;4402:8:83;;-1:-1:-1;4402:8:83;;-1:-1:-1;4357:18:120;;4402:21:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4475:13:83;;4500:46;;-1:-1:-1;;;4500:46:83;;4542:2;4500:46;;;4384:51:120;-1:-1:-1;;;;;4475:13:83;;;;-1:-1:-1;4475:13:83;;-1:-1:-1;4500:33:83;;4357:18:120;;4500:46:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4365:188;4306:247::o;2301:140:26:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4115:185:83;4223:13;;4269:23;;;-1:-1:-1;;;4269:23:83;;;;-1:-1:-1;;;;;4223:13:83;;;;4248:45;;4223:13;;4269:21;;:23;;;;;;;;;;;;;;;4223:13;4269:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4259:6;;-1:-1:-1;;;;;4259:6:83;;;:33;;;4248:10;:45::i;1866:141:26:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;5300:51:120;;;-1:-1:-1;;;5367:18:120;;;5360:34;2196:43:20;;;;;;;;;5273:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;16415:125:24:-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;3262:157:20:-;3322:9;3317:96;;3352:30;;;;;6544:2:120;6526:21;;;6583:2;6563:18;;;6556:30;6622:25;6617:2;6602:18;;6595:53;6680:2;6665:18;;6342:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;7121:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;7094:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;2409:432:20:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;7681:51:120;;;-1:-1:-1;;;7748:18:120;;;7741:34;;;;2712:4:20;7791:18:120;;;7784:34;2489:11:20;;1671:64;2586:43;;7654:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;2499:1;2490:6;2485:3;2481:16;2474:27;2455:48;;2251:258;;;:::o;2514:::-;2556:3;2594:5;2588:12;2621:6;2616:3;2609:19;2637:63;2693:6;2686:4;2681:3;2677:14;2670:4;2663:5;2659:16;2637:63;:::i;:::-;2754:2;2733:15;-1:-1:-1;;2729:29:120;2720:39;;;;2761:4;2716:50;;2514:258;-1:-1:-1;;2514:258:120:o;2777:803::-;2939:4;2968:2;3008;2997:9;2993:18;3038:2;3027:9;3020:21;3061:6;3096;3090:13;3127:6;3119;3112:22;3165:2;3154:9;3150:18;3143:25;;3227:2;3217:6;3214:1;3210:14;3199:9;3195:30;3191:39;3177:53;;3265:2;3257:6;3253:15;3286:1;3296:255;3310:6;3307:1;3304:13;3296:255;;;3403:2;3399:7;3387:9;3379:6;3375:22;3371:36;3366:3;3359:49;3431:40;3464:6;3455;3449:13;3431:40;:::i;:::-;3421:50;-1:-1:-1;3529:12:120;;;;3494:15;;;;3332:1;3325:9;3296:255;;;-1:-1:-1;3568:6:120;;2777:803;-1:-1:-1;;;;;;;2777:803:120:o;4446:290::-;4516:6;4569:2;4557:9;4548:7;4544:23;4540:32;4537:52;;;4585:1;4582;4575:12;4537:52;4611:16;;-1:-1:-1;;;;;4656:31:120;;4646:42;;4636:70;;4702:1;4699;4692:12;4636:70;4725:5;4446:290;-1:-1:-1;;;4446:290:120:o;4741:380::-;4820:1;4816:12;;;;4863;;;4884:61;;4938:4;4930:6;4926:17;4916:27;;4884:61;4991:2;4983:6;4980:14;4960:18;4957:38;4954:161;;;5037:10;5032:3;5028:20;5025:1;5018:31;5072:4;5069:1;5062:15;5100:4;5097:1;5090:15;4954:161;;4741:380;;;:::o;5405:371::-;-1:-1:-1;;;;;;5590:33:120;;5578:46;;5647:13;;5560:3;;5669:61;5647:13;5719:1;5710:11;;5703:4;5691:17;;5669:61;:::i;:::-;5750:16;;;;5768:1;5746:24;;5405:371;-1:-1:-1;;;5405:371:120:o;5781:274::-;5910:3;5948:6;5942:13;5964:53;6010:6;6005:3;5998:4;5990:6;5986:17;5964:53;:::i;:::-;6033:16;;;;;5781:274;-1:-1:-1;;5781:274:120:o;6060:277::-;6127:6;6180:2;6168:9;6159:7;6155:23;6151:32;6148:52;;;6196:1;6193;6186:12;6148:52;6228:9;6222:16;6281:5;6274:13;6267:21;6260:5;6257:32;6247:60;;6303:1;6300;6293:12;7157:317;-1:-1:-1;;;;;7334:32:120;;7316:51;;7403:2;7398;7383:18;;7376:30;;;-1:-1:-1;;7423:45:120;;7449:18;;7441:6;7423:45;:::i;:::-;7415:53;7157:317;-1:-1:-1;;;;7157:317:120:o","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","testOwnerCanTransferOwnership()":"420a101e","testOwnerIsInitializedFromConstructor()":"97418e45","testRandomAccountCannotTransferOwnership()":"8108c013"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"testOwnerCanTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerIsInitializedFromConstructor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAccountCannotTransferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PriceAggregatorUniV3.t.sol\":\"OwnershipPriceAggregatorUniV3Test\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/utils/SafeCast.sol\":{\"keccak256\":\"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650\",\"dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df\",\"dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E\"]},\"src/PriceAggregatorUniV3.sol\":{\"keccak256\":\"0x0424fc4b6c7de9109aeafa4b76852d8dfc8ad438356c51fa3e60f3ca551df16a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b118d90d534ce8605e15306f99997def0956c3616e20ee7758b9878f6e401416\",\"dweb:/ipfs/QmSrBW1e3SNHrMpjyAyJzveEjSPQk68SwhsbRPtuBmSST6\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]},\"test/PriceAggregatorUniV3.t.sol\":{\"keccak256\":\"0xbf206b837bfd4d2db3f4f8ca3d91760ef35ce7ccc37b3458aa48e7c016e635aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abfeec17c878c6cd7bfa7d5df69b96fe7f09709648e4f1c9f6e83adc81c75a84\",\"dweb:/ipfs/Qmaf8BH6LbWU63FRtxbWmu6TqiReipqLZKLVCZNwCpt2uS\"]},\"test/mocks/MockPriceAggregator.sol\":{\"keccak256\":\"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c\",\"dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo\"]},\"test/mocks/MockUniswapV3Pool.sol\":{\"keccak256\":\"0x409cdf07665b4eac9b4ec77a76b04c5097c06434fc6613aef3969dd58b9beda0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb78ec12fb6f64ce1e056cc25ded3075abae785666540e6c5dee633e960fffa7\",\"dweb:/ipfs/QmdNXdkywQA1rinQFxyKsWpsSLhABFoaQV3YYpyc1T1xT9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"testOwnerCanTransferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerIsInitializedFromConstructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAccountCannotTransferOwnership"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PriceAggregatorUniV3.t.sol":"OwnershipPriceAggregatorUniV3Test"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/utils/SafeCast.sol":{"keccak256":"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21","urls":["bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650","dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy"],"license":"BUSL-1.1"},"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968","urls":["bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e","dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"keccak256":"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b","urls":["bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa","dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43","urls":["bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea","dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/libraries/FullMath.sol":{"keccak256":"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645","urls":["bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125","dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd"],"license":"MIT"},"lib/v3-core/contracts/libraries/TickMath.sol":{"keccak256":"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129","urls":["bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c","dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/OracleLibrary.sol":{"keccak256":"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b","urls":["bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53","dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/PoolAddress.sol":{"keccak256":"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f","urls":["bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df","dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E"],"license":"GPL-2.0-or-later"},"src/PriceAggregatorUniV3.sol":{"keccak256":"0x0424fc4b6c7de9109aeafa4b76852d8dfc8ad438356c51fa3e60f3ca551df16a","urls":["bzz-raw://b118d90d534ce8605e15306f99997def0956c3616e20ee7758b9878f6e401416","dweb:/ipfs/QmSrBW1e3SNHrMpjyAyJzveEjSPQk68SwhsbRPtuBmSST6"],"license":"BUSL-1.1"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"},"test/PriceAggregatorUniV3.t.sol":{"keccak256":"0xbf206b837bfd4d2db3f4f8ca3d91760ef35ce7ccc37b3458aa48e7c016e635aa","urls":["bzz-raw://abfeec17c878c6cd7bfa7d5df69b96fe7f09709648e4f1c9f6e83adc81c75a84","dweb:/ipfs/Qmaf8BH6LbWU63FRtxbWmu6TqiReipqLZKLVCZNwCpt2uS"],"license":"MIT"},"test/mocks/MockPriceAggregator.sol":{"keccak256":"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1","urls":["bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c","dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo"],"license":"BUSL-1.1"},"test/mocks/MockUniswapV3Pool.sol":{"keccak256":"0x409cdf07665b4eac9b4ec77a76b04c5097c06434fc6613aef3969dd58b9beda0","urls":["bzz-raw://fb78ec12fb6f64ce1e056cc25ded3075abae785666540e6c5dee633e960fffa7","dweb:/ipfs/QmdNXdkywQA1rinQFxyKsWpsSLhABFoaQV3YYpyc1T1xT9"],"license":"UNLICENSED"}},"version":1},"id":83} \ No newline at end of file diff --git a/out/PriceAggregatorUniV3.t.sol/PriceAggregatorUniV3Test.json b/out/PriceAggregatorUniV3.t.sol/PriceAggregatorUniV3Test.json new file mode 100644 index 00000000..7cca856f --- /dev/null +++ b/out/PriceAggregatorUniV3.t.sol/PriceAggregatorUniV3Test.json @@ -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":"getPriceTokenNotSupported","inputs":[],"outputs":[],"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":"testConstructorArgs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNotOwnerAddingTokenSupport","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNotOwnerOveriddenPoolForRoute","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNotOwnerSetDefaultTwapPeriod","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerAddingTokenSupport","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerOveriddenPoolForRoute","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerSetDefaultTwapPeriod","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveToken","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveTokenNotOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTokenIDSupported","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b50614ce68061003d6000396000f3fe60806040523480156200001157600080fd5b50600436106200015d5760003560e01c8063916a17c611620000c7578063c1a23ea51162000086578063c1a23ea5146200024b578063cb5e02941462000255578063d4d58a3f146200025f578063e20c9f711462000269578063edb501211462000273578063fa7626d4146200027d57600080fd5b8063916a17c6146200020857806398fb88ee1462000212578063a87c42e8146200021c578063b5508aa91462000226578063ba414fa6146200023057600080fd5b80633e5e3c2311620001205780633e5e3c2314620001ae5780633f7286f414620001b857806341b1ccb414620001c257806366d9a9a014620001cc5780637e9f2b2214620001e557806385226c8114620001ef57600080fd5b80630a9254e414620001625780631a655f52146200016e5780631ed7831c14620001785780633085c76b146200019a5780633d8c48fe14620001a4575b600080fd5b6200016c6200028b565b005b6200016c62000537565b6200018262000633565b60405162000191919062001be5565b60405180910390f35b6200016c62000697565b6200016c6200072e565b6200018262000882565b62000182620008e4565b6200016c62000946565b620001d662000a17565b60405162000191919062001c34565b6200016c62000b0a565b620001f962000c16565b60405162000191919062001d48565b620001d662000cf0565b6200016c62000dda565b6200016c62000f2b565b620001f962001143565b6200023a6200121d565b604051901515815260200162000191565b6200016c62001352565b6200016c6200154b565b6200016c62001642565b6200018262001720565b6200016c62001782565b6000546200023a9060ff1681565b620002b36040518060400160405280600581526020016437bbb732b960d91b815250620018ff565b601b80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152637573646360e01b6020820152620002f990620018ff565b601c80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152630eecae8d60e31b60208201526200033f90620018ff565b601d80546001600160a01b0319166001600160a01b03928316908117909155601c5460405191921690610bb890620003779062001bc9565b620003859392919062001dae565b604051809103906000f080158015620003a2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039283161790556005601e819055601b54601d54601c546040519285169491821693911691620003e89062001bd7565b6001600160a01b0394851681529284166020840152921660408201526060810191909152608001604051809103906000f0801580156200042c573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b03199182168117909255601f80549091169091179055601b5460405163ca669fa760e01b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620004aa57600080fd5b505af1158015620004bf573d6000803e3d6000fd5b5050602054601d5460215460405163feefb56360e01b81526001600160a01b03938416955063feefb56394506200050193928316929091169060040162001dd5565b600060405180830381600087803b1580156200051c57600080fd5b505af115801562000531573d6000803e3d6000fd5b50505050565b601f5460405163034d94bb60e21b8152620005b4916001600160a01b031690630d3652ec906200056a9060040162001e17565b602060405180830381865afa15801562000588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ae919062001e41565b62001913565b601f5460405163034d94bb60e21b815262000631916001600160a01b031690630d3652ec90620005e79060040162001e6c565b602060405180830381865afa15801562000605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062b919062001e41565b6200198b565b565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200068d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200066e575b5050505050905090565b60008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006e557600080fd5b505af1158015620006fa573d6000803e3d6000fd5b5050602054604051630fa2ac9160e11b81526001600160a01b039091169250631f4559229150620005019060040162001e17565b601b5460405163ca669fa760e01b81526001600160a01b039091166004820152600a90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200078b57600080fd5b505af1158015620007a0573d6000803e3d6000fd5b505060205460405163d45bd6b160e01b8152600481018590526001600160a01b03909116925063d45bd6b19150602401600060405180830381600087803b158015620007eb57600080fd5b505af115801562000800573d6000803e3d6000fd5b50506020805460408051635c3c8f7160e11b815290516200087f95506001600160a01b03909216935063b8791ee29260048083019391928290030181865afa15801562000851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000877919062001e90565b821462001913565b50565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200068d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200066e575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200068d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200066e575050505050905090565b6000600a905060008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200099a57600080fd5b505af1158015620009af573d6000803e3d6000fd5b505060205460405163d45bd6b160e01b8152600481018590526001600160a01b03909116925063d45bd6b191506024015b600060405180830381600087803b158015620009fb57600080fd5b505af115801562000a10573d6000803e3d6000fd5b5050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000b015760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000ae857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000aa95790505b5050505050815250508152602001906001019062000a3b565b50505050905090565b601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000b6457600080fd5b505af115801562000b79573d6000803e3d6000fd5b5050602054604051630fa2ac9160e11b81526001600160a01b039091169250631f455922915062000bad9060040162001e17565b600060405180830381600087803b15801562000bc857600080fd5b505af115801562000bdd573d6000803e3d6000fd5b5050601f5460405163034d94bb60e21b81526200063193506001600160a01b039091169150630d3652ec90620005e79060040162001e17565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000b0157838290600052602060002001805462000c5c9062001eaa565b80601f016020809104026020016040519081016040528092919081815260200182805462000c8a9062001eaa565b801562000cdb5780601f1062000caf5761010080835404028352916020019162000cdb565b820191906000526020600020905b81548152906001019060200180831162000cbd57829003601f168201915b50505050508152602001906001019062000c3a565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000b015760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000dc157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d825790505b5050505050815250508152602001906001019062000d14565b600062000e03604051806040016040528060048152602001637762746360e01b815250620018ff565b601c5460405191925060009183916001600160a01b031690610fa09062000e2a9062001bc9565b62000e389392919062001dae565b604051809103906000f08015801562000e55573d6000803e3d6000fd5b50905060008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ea657600080fd5b505af115801562000ebb573d6000803e3d6000fd5b505060205460405163feefb56360e01b81526001600160a01b03909116925063feefb563915062000ef3908590859060040162001ee7565b600060405180830381600087803b15801562000f0e57600080fd5b505af115801562000f23573d6000803e3d6000fd5b505050505050565b601f5460408051638da5cb5b60e01b8152905162000fb5926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801562000f78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f9e919062001f1c565b601b546001600160a01b0390811691161462001913565b60208054604080516315ab88c960e31b815290516200103e936001600160a01b039093169263ad5c464892600480820193918290030181865afa15801562001001573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001027919062001f1c565b601d546001600160a01b0390811691161462001913565b60208054604080516389a3027160e01b81529051620010c7936001600160a01b03909316926389a3027192600480820193918290030181865afa1580156200108a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010b0919062001f1c565b601c546001600160a01b0390811691161462001913565b6020805460408051635c3c8f7160e11b8152905162000631936001600160a01b039093169263b8791ee292600480820193918290030181865afa15801562001113573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001139919062001e90565b601e541462001913565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000b01578382906000526020600020018054620011899062001eaa565b80601f0160208091040260200160405190810160405280929190818152602001828054620011b79062001eaa565b8015620012085780601f10620011dc5761010080835404028352916020019162001208565b820191906000526020600020905b815481529060010190602001808311620011ea57829003601f168201915b50505050508152602001906001019062001167565b60008054610100900460ff16156200123e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200134d5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620012cf917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001f47565b60408051601f1981840301815290829052620012eb9162001f7a565b6000604051808303816000865af19150503d80600081146200132a576040519150601f19603f3d011682016040523d82523d6000602084013e6200132f565b606091505b509150508080602001905181019062001349919062001e41565b9150505b919050565b60006200137b604051806040016040528060048152602001637762746360e01b815250620018ff565b601c5460405191925060009183916001600160a01b031690610fa090620013a29062001bc9565b620013b09392919062001dae565b604051809103906000f080158015620013cd573d6000803e3d6000fd5b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200142b57600080fd5b505af115801562001440573d6000803e3d6000fd5b505060205460405163feefb56360e01b81526001600160a01b03909116925063feefb563915062001478908590859060040162001ee7565b600060405180830381600087803b1580156200149357600080fd5b505af1158015620014a8573d6000803e3d6000fd5b5050602054601c54604051634851d6c560e11b81526001600160a01b0387811660048301529182166024820152620015479450911691506390a3ad8a906044015b602060405180830381865afa15801562001507573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200152d919062001f1c565b6001600160a01b0316826001600160a01b03161462001913565b5050565b601d54601c546040516000926001600160a01b03908116921690610fa090620015749062001bc9565b620015829392919062001dae565b604051809103906000f0801580156200159f573d6000803e3d6000fd5b50905060008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620015f057600080fd5b505af115801562001605573d6000803e3d6000fd5b5050602054601d5460405163feefb56360e01b81526001600160a01b03928316945063feefb5639350620009e09290911690859060040162001dd5565b60008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200169057600080fd5b505af1158015620016a5573d6000803e3d6000fd5b5050601f54604051630bbceb3360e21b81526001600160a01b039091169250632ef3accc9150620016dc9060649060040162001f98565b602060405180830381865afa158015620016fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087f919062001e90565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200068d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200066e575050505050905090565b601d54601c546040516000926001600160a01b03908116921690610fa090620017ab9062001bc9565b620017b99392919062001dae565b604051809103906000f080158015620017d6573d6000803e3d6000fd5b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200183457600080fd5b505af115801562001849573d6000803e3d6000fd5b5050602054601d5460405163feefb56360e01b81526001600160a01b03928316945063feefb5639350620018869290911690859060040162001dd5565b600060405180830381600087803b158015620018a157600080fd5b505af1158015620018b6573d6000803e3d6000fd5b5050602054601d54601c54604051634851d6c560e11b81526001600160a01b03928316600482015290821660248201526200087f9450911691506390a3ad8a90604401620014e9565b60006200190c8262001997565b5092915050565b806200087f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019799060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200087f62001ab6565b6200087f811562001913565b60008082604051602001620019ad919062001f7a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001a19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3f919062001f1c565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001a7d908590879060040162001fca565b600060405180830381600087803b15801562001a9857600080fd5b505af115801562001aad573d6000803e3d6000fd5b50505050915091565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001bb85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001b53929160200162001f47565b60408051601f198184030181529082905262001b6f9162001f7a565b6000604051808303816000865af19150503d806000811462001bae576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb3565b606091505b505050505b6000805461ff001916610100179055565b6109268062001ff983390190565b612372806200291f83390190565b6020808252825182820181905260009190848201906040850190845b8181101562001c285783516001600160a01b03168352928401929184019160010162001c01565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001cdc57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001cc65783516001600160e01b0319168252928b019260019290920191908b019062001c9a565b50978a0197955050509187019160010162001c5c565b50919998505050505050505050565b60005b8381101562001d0857818101518382015260200162001cee565b83811115620005315750506000910152565b6000815180845262001d3481602086016020860162001ceb565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001da157603f1988860301845262001d8e85835162001d1a565b9450928501929085019060010162001d6f565b5092979650505050505050565b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b6001600160a01b0383811682526060602083018190526003908301526208aa8960eb1b608083015260009060a083015b91508084166040840152509392505050565b60208152600062001e3b60208301600381526208aa8960eb1b602082015260400190565b92915050565b60006020828403121562001e5457600080fd5b8151801515811462001e6557600080fd5b9392505050565b60208152600062001e3b60208301600381526242544360e81b602082015260400190565b60006020828403121562001ea357600080fd5b5051919050565b600181811c9082168062001ebf57607f821691505b6020821081141562001ee157634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0383811682526060602083018190526003908301526242544360e81b608083015260009060a0830162001e05565b60006020828403121562001f2f57600080fd5b81516001600160a01b038116811462001e6557600080fd5b6001600160e01b031983168152815160009062001f6c81600485016020870162001ceb565b919091016004019392505050565b6000825162001f8e81846020870162001ceb565b9190910192915050565b60408152600062001fbc60408301600381526242544360e81b602082015260400190565b905082602083015292915050565b6001600160a01b038316815260406020820181905260009062001ff09083018462001d1a565b94935050505056fe60c060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610134565b6000610047848460006100ad60201b61050d1760201c565b80516001600160a01b0390811660805260208201511660a0526000805461ffff60281b19166501000000000061ffff86160217905590505b61ffff8216156100a457600180548101815560005261009d82610182565b915061007f565b505050506101ae565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156100e8579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b80516001600160a01b038116811461012f57600080fd5b919050565b60008060006060848603121561014957600080fd5b61015284610118565b925061016060208501610118565b9150604084015161ffff8116811461017757600080fd5b809150509250925092565b600061ffff8216806101a457634e487b7160e01b600052601160045260246000fd5b6000190192915050565b60805160a0516107546101d2600039600061014b01526000606c01526107546000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630dfe168114610067578063252c09d7146100ab5780633850c7bd146100e557806346d61dc014610131578063d21220a714610146578063f814bf531461016d575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610578565b610180565b6040805163ffffffff909416845260069290920b60208401521515908201526060016100a2565b60005461010c90600281900b9061ffff630100000082048116916501000000000090041683565b6040805160029490940b845261ffff92831660208501529116908201526060016100a2565b61014461013f3660046105dd565b6101be565b005b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61014461017b366004610649565b610424565b6001818154811061019057600080fd5b60009182526020909120015463ffffffff81169150640100000000810460060b90600160581b900460ff1683565b8281146102575760405162461bcd60e51b815260206004820152605660248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527574687320286d757374206265206d61746368696e672960501b608482015260a4015b60405180910390fd5b60005465010000000000900461ffff168311156103175760405162461bcd60e51b815260206004820152606c60248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527f74687320286d757374206265203c20736c6f74302e6f62736572766174696f6e60848201526b43617264696e616c6974792960a01b60a482015260c40161024e565b60005b8381101561041d57604051806060016040528086868481811061033f5761033f61068f565b905060200201602081019061035491906106a5565b63ffffffff1681526020018484848181106103715761037161068f565b905060200201602081019061038691906106d2565b60060b815260200160011515815250600182815481106103a8576103a861068f565b6000918252602091829020835191018054928401516040909401511515600160581b0260ff60581b1966ffffffffffffff909516640100000000026affffffffffffffffffffff1990941663ffffffff909316929092179290921792909216919091179055610416816106f5565b905061031a565b5050505050565b60005461ffff650100000000009091048116908216106104e35760405162461bcd60e51b815260206004820152606860248201527f4d6f636b556e69737761705633506f6f6c23736574536c6f74302063616c6c6560448201527f64207769746820696e76616c6964206f62736572766174696f6e496e6465782060648201527f286d757374206265203c20736c6f74302e6f62736572766174696f6e43617264608482015267696e616c6974792960c01b60a482015260c40161024e565b6000805461ffff90921663010000000264ffffffffff1990921662ffffff90931692909217179055565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115610548579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b60006020828403121561058a57600080fd5b5035919050565b60008083601f8401126105a357600080fd5b50813567ffffffffffffffff8111156105bb57600080fd5b6020830191508360208260051b85010111156105d657600080fd5b9250929050565b600080600080604085870312156105f357600080fd5b843567ffffffffffffffff8082111561060b57600080fd5b61061788838901610591565b9096509450602087013591508082111561063057600080fd5b5061063d87828801610591565b95989497509550505050565b6000806040838503121561065c57600080fd5b82358060020b811461066d57600080fd5b9150602083013561ffff8116811461068457600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156106b757600080fd5b813563ffffffff811681146106cb57600080fd5b9392505050565b6000602082840312156106e457600080fd5b81358060060b81146106cb57600080fd5b600060001982141561071757634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122034fcefcdf9029a0bad5874692cfabe102d1232edc527549319c70c7eb00f529e64736f6c634300080c003360c06040523480156200001157600080fd5b5060405162002372380380620023728339810160408190526200003491620000d4565b6200003f3362000067565b6200004a8462000067565b6001600160a01b03928316608052911660a0526001555062000126565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000cf57600080fd5b919050565b60008060008060808587031215620000eb57600080fd5b620000f685620000b7565b93506200010660208601620000b7565b92506200011660408601620000b7565b6060959095015193969295505050565b60805160a0516121ee620001846000396000818161025d0152818161054f01526107810152600081816102ce0152818161036a015281816105dc01528181610628015281816106ae0152818161129f01526112d401526121ee6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063b8791ee211610071578063b8791ee2146102f0578063d45bd6b1146102f9578063ef25868b1461030c578063f2fde38b14610340578063feefb5631461035357600080fd5b80638da5cb5b1461027f5780638f5dab9a1461029057806390a3ad8a146102a3578063a6fe34c6146102b6578063ad5c4648146102c957600080fd5b806357fa59eb116100f457806357fa59eb146101fd5780636a3b312a14610210578063715018a61461023d5780637c6619491461024557806389a302711461025857600080fd5b806213b4fc1461013057806301276acf146101565780630d3652ec146101975780631f455922146101d55780632ef3accc146101ea575b600080fd5b61014361013e366004611833565b610366565b6040519081526020015b60405180910390f35b61017f61016436600461186b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014d565b6101c56101a53660046118cb565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161014d565b6101e86101e33660046119a9565b6103b8565b005b6101436101f83660046119eb565b6104a7565b61014361020b366004611a5b565b61057f565b61022361021e366004611ac9565b610598565b60408051600293840b81529190920b60208201520161014d565b6101e86105c4565b610143610253366004611b02565b6105d8565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661017f565b61014361029e366004611b4a565b610677565b61017f6102b1366004611bbb565b610699565b6101436102c4366004611be9565b6106aa565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b61014360015481565b6101e861030736600461186b565b6106eb565b61017f61031a3660046118cb565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6101e861034e366004611c1e565b6106f8565b6101e8610361366004611c3b565b610771565b60007f00000000000000000000000000000000000000000000000000000000000000008161039d6103988387846109c0565b610a2b565b90506103ac8287878488610a7e565b925050505b9392505050565b6103c0610b18565b600382826040516103d2929190611c98565b9081526040519081900360200190205460ff1661042c5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064015b60405180910390fd5b600060038383604051610440929190611c98565b908152604051908190036020018120805492151560ff19909316929092179091556000906002906104749085908590611c98565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000600384846040516104bb929190611c98565b9081526040519081900360200190205460ff166105105760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610423565b600060028585604051610524929190611c98565b908152602001604051809103902060009054906101000a90046001600160a01b0316905061057681847f00000000000000000000000000000000000000000000000000000000000000006001546105d8565b95945050505050565b600061058d82858786610b72565b90505b949350505050565b6000806000806105a786610c80565b90945091506105b68686610f8c565b509396939550929350505050565b6105cc610b18565b6105d660006111d3565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156106265761061f848484610366565b9050610590565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561066b5761061f8585846106aa565b61061f85858585611223565b600061068f86866001600160801b031686868661128c565b9695505050505050565b60006103b1610398848460006109c0565b60007f0000000000000000000000000000000000000000000000000000000000000000816106dc6103988784846109c0565b90506103ac8686848488610a7e565b6106f3610b18565b600155565b610700610b18565b6001600160a01b0381166107655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610423565b61076e816111d3565b50565b610779610b18565b60006107a7857f000000000000000000000000000000000000000000000000000000000000000060006109c0565b90506001600160a01b0382161561090057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611ca8565b6001600160a01b031681600001516001600160a01b03161480156108b45750816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190611ca8565b6001600160a01b031681602001516001600160a01b0316145b6109005760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e73206f7220706f6f6c206e6f7420636f72726563740000000000006044820152606401610423565b816004600061090e84611304565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028585604051610953929190611c98565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160038585604051610999929190611c98565b908152604051908190036020019020805491151560ff199092169190911790555050505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156109fb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000610a368261134e565b90506001600160a01b038116610a795781516020830151604051634e8a64e960e01b81526001600160a01b03928316600482015291166024820152604401610423565b919050565b6000806000806000610a8f87610c80565b9094509250610aa687610aa18861137d565b610f8c565b909250905060006001600160a01b03808a16908c161015610add578260020b8560020b12610ad45782610ad6565b845b9050610af5565b8260020b8560020b13610af05782610af2565b845b90505b610b0981610b028c6113e2565b8d8c610b72565b9b9a5050505050505050505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610423565b600080610b7e8661144b565b90506001600160801b036001600160a01b03821611610c04576000610bac6001600160a01b03831680611cdb565b9050836001600160a01b0316856001600160a01b031610610be457610bdf600160c01b876001600160801b03168361176b565b610bfc565b610bfc81876001600160801b0316600160c01b61176b565b925050610c77565b6000610c236001600160a01b038316806801000000000000000061176b565b9050836001600160a01b0316856001600160a01b031610610c5b57610c56600160801b876001600160801b03168361176b565b610c73565b610c7381876001600160801b0316600160801b61176b565b9250505b50949350505050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611d1c565b5050509350935093505060018161ffff1611610d2e5760405162461bcd60e51b81526020600482015260036024820152624e454f60e81b6044820152606401610423565b60405163252c09d760e01b815261ffff83166004820152600090819081906001600160a01b038a169063252c09d790602401608060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190611dc1565b509250925092504263ffffffff168363ffffffff1614610e2d5785896001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190611e19565b97509750505050505050915091565b60008461ffff1660018661ffff168861ffff16610e4a9190611e36565b610e549190611e4e565b610e5e9190611e7b565b90506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401610e9491815260200190565b608060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed59190611dc1565b935093509350935080610f105760405162461bcd60e51b81526020600482015260036024820152624f4e4960e81b6044820152606401610423565b6000610f1c858a611e8f565b905063ffffffff8116610f2f858a611eb4565b610f399190611f04565b9b5060006020610f49858a611f42565b6001600160a01b0390811690911b90610f689063ffffffff8516611f62565b610f729190611f91565b90508c819e509e5050505050505050505050505050915091565b60008063ffffffff8316610fc75760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610423565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610ffc57610ffc611fb7565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061102b5761102b611fb7565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016110749190611fcd565b600060405180830381865afa158015611091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110b991908101906120af565b915091506000826000815181106110d2576110d2611fb7565b6020026020010151836001815181106110ed576110ed611fb7565b60200260200101516110ff9190611eb4565b905060008260008151811061111657611116611fb7565b60200260200101518360018151811061113157611131611fb7565b60200260200101516111439190611f42565b905061115563ffffffff891683611f04565b965060008260060b12801561117b575061117563ffffffff891683612172565b60060b15155b1561118e578661118a81612194565b9750505b60006111a76001600160a01b0363ffffffff8b16611f62565b90506111c4640100000000600160c01b03602084901b1682611f91565b96505050505050509250929050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123a611235878660006109c0565b61134e565b90506001600160a01b03811615611260576112588686868487610a7e565b915050610590565b604051634e8a64e960e01b81526001600160a01b03808816600483015285166024820152604401610423565b6000806112c38461129c886113e2565b897f0000000000000000000000000000000000000000000000000000000000000000610b72565b90506112f9836112d2836113e2565b7f000000000000000000000000000000000000000000000000000000000000000088610b72565b979650505050505050565b8051602091820151604080516bffffffffffffffffffffffff19606094851b8116828701529290931b90911660348301528051808303602801815260489092019052805191012090565b60006004600061135d84611304565b81526020810191909152604001600020546001600160a01b031692915050565b8063ffffffff81168114610a795760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610423565b806001600160801b0381168114610a795760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610423565b60008060008360020b12611462578260020b61146a565b8260020b6000035b9050620d89e8811115611490576040516315e4079d60e11b815260040160405180910390fd5b6000600182166114a457600160801b6114b6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156114ea576ffff97272373d413259a46990580e213a0260801c5b6004821615611509576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611528576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611547576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611566576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611585576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156115a4576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156115c4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156115e4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611604576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611624576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611644576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611664576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611684576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156116a4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156116c5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156116e5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611704576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611721576b048a170391f7dc42444e8fa20260801c5b60008460020b131561174257806000198161173e5761173e611e65565b0490505b640100000000810615611756576001611759565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600014156117a5576000841161179a57600080fd5b5082900490506103b1565b8084116117b157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038116811461076e57600080fd5b60008060006060848603121561184857600080fd5b83359250602084013561185a8161181e565b929592945050506040919091013590565b60006020828403121561187d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118c3576118c3611884565b604052919050565b600060208083850312156118de57600080fd5b823567ffffffffffffffff808211156118f657600080fd5b818501915085601f83011261190a57600080fd5b81358181111561191c5761191c611884565b61192e601f8201601f1916850161189a565b9150808252868482850101111561194457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360208285010111156119a257600080fd5b9250929050565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611960565b90969095509350505050565b600080600060408486031215611a0057600080fd5b833567ffffffffffffffff811115611a1757600080fd5b611a2386828701611960565b909790965060209590950135949350505050565b6001600160801b038116811461076e57600080fd5b8060020b811461076e57600080fd5b60008060008060808587031215611a7157600080fd5b8435611a7c8161181e565b93506020850135611a8c81611a37565b92506040850135611a9c8161181e565b91506060850135611aac81611a4c565b939692955090935050565b63ffffffff8116811461076e57600080fd5b60008060408385031215611adc57600080fd5b8235611ae78161181e565b91506020830135611af781611ab7565b809150509250929050565b60008060008060808587031215611b1857600080fd5b8435611b238161181e565b9350602085013592506040850135611b3a8161181e565b9396929550929360600135925050565b600080600080600060a08688031215611b6257600080fd5b8535611b6d8161181e565b94506020860135611b7d81611a37565b93506040860135611b8d8161181e565b92506060860135611b9d81611a4c565b91506080860135611bad81611a4c565b809150509295509295909350565b60008060408385031215611bce57600080fd5b8235611bd98161181e565b91506020830135611af78161181e565b600080600060608486031215611bfe57600080fd5b8335611c098161181e565b95602085013595506040909401359392505050565b600060208284031215611c3057600080fd5b81356103b18161181e565b60008060008060608587031215611c5157600080fd5b8435611c5c8161181e565b9350602085013567ffffffffffffffff811115611c7857600080fd5b611c8487828801611960565b9094509250506040850135611aac8161181e565b8183823760009101908152919050565b600060208284031215611cba57600080fd5b81516103b18161181e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cf557611cf5611cc5565b500290565b805161ffff81168114610a7957600080fd5b80518015158114610a7957600080fd5b600080600080600080600060e0888a031215611d3757600080fd5b8751611d428161181e565b6020890151909750611d5381611a4c565b9550611d6160408901611cfa565b9450611d6f60608901611cfa565b9350611d7d60808901611cfa565b925060a088015160ff81168114611d9357600080fd5b9150611da160c08901611d0c565b905092959891949750929550565b8051600681900b8114610a7957600080fd5b60008060008060808587031215611dd757600080fd5b8451611de281611ab7565b9350611df060208601611daf565b92506040850151611e008161181e565b9150611e0e60608601611d0c565b905092959194509250565b600060208284031215611e2b57600080fd5b81516103b181611a37565b60008219821115611e4957611e49611cc5565b500190565b600082821015611e6057611e60611cc5565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e8a57611e8a611e65565b500690565b600063ffffffff83811690831681811015611eac57611eac611cc5565b039392505050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615611edf57611edf611cc5565b81667fffffffffffff018313811615611efa57611efa611cc5565b5090039392505050565b60008160060b8360060b80611f1b57611f1b611e65565b667fffffffffffff19821460001982141615611f3957611f39611cc5565b90059392505050565b60006001600160a01b0383811690831681811015611eac57611eac611cc5565b60006001600160c01b0382811684821681151582840482111615611f8857611f88611cc5565b02949350505050565b60006001600160c01b0383811680611fab57611fab611e65565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561200b57835163ffffffff1683529284019291840191600101611fe9565b50909695505050505050565b600067ffffffffffffffff82111561203157612031611884565b5060051b60200190565b600082601f83011261204c57600080fd5b8151602061206161205c83612017565b61189a565b82815260059290921b8401810191818101908684111561208057600080fd5b8286015b848110156120a45780516120978161181e565b8352918301918301612084565b509695505050505050565b600080604083850312156120c257600080fd5b825167ffffffffffffffff808211156120da57600080fd5b818501915085601f8301126120ee57600080fd5b815160206120fe61205c83612017565b82815260059290921b8401810191818101908984111561211d57600080fd5b948201945b838610156121425761213386611daf565b82529482019490820190612122565b9188015191965090935050508082111561215b57600080fd5b506121688582860161203b565b9150509250929050565b60008260060b8061218557612185611e65565b808360060b0791505092915050565b60008160020b627fffff198114156121ae576121ae611cc5565b600019019291505056fea2646970667358221220bbf12e190f519e18639783ed80d5dc10202cb112533d41caf7d427bed6867ab664736f6c634300080c0033885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212206839c661c11da1efd390156c279e824cc6c47f7ed877ed548c38c367d50caf4264736f6c634300080c0033","sourceMap":"394:3266:83:-:0;;;1572:26:20;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;394:3266:83;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b50600436106200015d5760003560e01c8063916a17c611620000c7578063c1a23ea51162000086578063c1a23ea5146200024b578063cb5e02941462000255578063d4d58a3f146200025f578063e20c9f711462000269578063edb501211462000273578063fa7626d4146200027d57600080fd5b8063916a17c6146200020857806398fb88ee1462000212578063a87c42e8146200021c578063b5508aa91462000226578063ba414fa6146200023057600080fd5b80633e5e3c2311620001205780633e5e3c2314620001ae5780633f7286f414620001b857806341b1ccb414620001c257806366d9a9a014620001cc5780637e9f2b2214620001e557806385226c8114620001ef57600080fd5b80630a9254e414620001625780631a655f52146200016e5780631ed7831c14620001785780633085c76b146200019a5780633d8c48fe14620001a4575b600080fd5b6200016c6200028b565b005b6200016c62000537565b6200018262000633565b60405162000191919062001be5565b60405180910390f35b6200016c62000697565b6200016c6200072e565b6200018262000882565b62000182620008e4565b6200016c62000946565b620001d662000a17565b60405162000191919062001c34565b6200016c62000b0a565b620001f962000c16565b60405162000191919062001d48565b620001d662000cf0565b6200016c62000dda565b6200016c62000f2b565b620001f962001143565b6200023a6200121d565b604051901515815260200162000191565b6200016c62001352565b6200016c6200154b565b6200016c62001642565b6200018262001720565b6200016c62001782565b6000546200023a9060ff1681565b620002b36040518060400160405280600581526020016437bbb732b960d91b815250620018ff565b601b80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152637573646360e01b6020820152620002f990620018ff565b601c80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152630eecae8d60e31b60208201526200033f90620018ff565b601d80546001600160a01b0319166001600160a01b03928316908117909155601c5460405191921690610bb890620003779062001bc9565b620003859392919062001dae565b604051809103906000f080158015620003a2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b039283161790556005601e819055601b54601d54601c546040519285169491821693911691620003e89062001bd7565b6001600160a01b0394851681529284166020840152921660408201526060810191909152608001604051809103906000f0801580156200042c573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b03199182168117909255601f80549091169091179055601b5460405163ca669fa760e01b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620004aa57600080fd5b505af1158015620004bf573d6000803e3d6000fd5b5050602054601d5460215460405163feefb56360e01b81526001600160a01b03938416955063feefb56394506200050193928316929091169060040162001dd5565b600060405180830381600087803b1580156200051c57600080fd5b505af115801562000531573d6000803e3d6000fd5b50505050565b601f5460405163034d94bb60e21b8152620005b4916001600160a01b031690630d3652ec906200056a9060040162001e17565b602060405180830381865afa15801562000588573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ae919062001e41565b62001913565b601f5460405163034d94bb60e21b815262000631916001600160a01b031690630d3652ec90620005e79060040162001e6c565b602060405180830381865afa15801562000605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062b919062001e41565b6200198b565b565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200068d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200066e575b5050505050905090565b60008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006e557600080fd5b505af1158015620006fa573d6000803e3d6000fd5b5050602054604051630fa2ac9160e11b81526001600160a01b039091169250631f4559229150620005019060040162001e17565b601b5460405163ca669fa760e01b81526001600160a01b039091166004820152600a90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200078b57600080fd5b505af1158015620007a0573d6000803e3d6000fd5b505060205460405163d45bd6b160e01b8152600481018590526001600160a01b03909116925063d45bd6b19150602401600060405180830381600087803b158015620007eb57600080fd5b505af115801562000800573d6000803e3d6000fd5b50506020805460408051635c3c8f7160e11b815290516200087f95506001600160a01b03909216935063b8791ee29260048083019391928290030181865afa15801562000851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000877919062001e90565b821462001913565b50565b6060600f8054806020026020016040519081016040528092919081815260200182805480156200068d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200066e575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156200068d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200066e575050505050905090565b6000600a905060008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200099a57600080fd5b505af1158015620009af573d6000803e3d6000fd5b505060205460405163d45bd6b160e01b8152600481018590526001600160a01b03909116925063d45bd6b191506024015b600060405180830381600087803b158015620009fb57600080fd5b505af115801562000a10573d6000803e3d6000fd5b5050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000b015760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000ae857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000aa95790505b5050505050815250508152602001906001019062000a3b565b50505050905090565b601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000b6457600080fd5b505af115801562000b79573d6000803e3d6000fd5b5050602054604051630fa2ac9160e11b81526001600160a01b039091169250631f455922915062000bad9060040162001e17565b600060405180830381600087803b15801562000bc857600080fd5b505af115801562000bdd573d6000803e3d6000fd5b5050601f5460405163034d94bb60e21b81526200063193506001600160a01b039091169150630d3652ec90620005e79060040162001e17565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000b0157838290600052602060002001805462000c5c9062001eaa565b80601f016020809104026020016040519081016040528092919081815260200182805462000c8a9062001eaa565b801562000cdb5780601f1062000caf5761010080835404028352916020019162000cdb565b820191906000526020600020905b81548152906001019060200180831162000cbd57829003601f168201915b50505050508152602001906001019062000c3a565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000b015760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000dc157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d825790505b5050505050815250508152602001906001019062000d14565b600062000e03604051806040016040528060048152602001637762746360e01b815250620018ff565b601c5460405191925060009183916001600160a01b031690610fa09062000e2a9062001bc9565b62000e389392919062001dae565b604051809103906000f08015801562000e55573d6000803e3d6000fd5b50905060008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ea657600080fd5b505af115801562000ebb573d6000803e3d6000fd5b505060205460405163feefb56360e01b81526001600160a01b03909116925063feefb563915062000ef3908590859060040162001ee7565b600060405180830381600087803b15801562000f0e57600080fd5b505af115801562000f23573d6000803e3d6000fd5b505050505050565b601f5460408051638da5cb5b60e01b8152905162000fb5926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801562000f78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f9e919062001f1c565b601b546001600160a01b0390811691161462001913565b60208054604080516315ab88c960e31b815290516200103e936001600160a01b039093169263ad5c464892600480820193918290030181865afa15801562001001573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001027919062001f1c565b601d546001600160a01b0390811691161462001913565b60208054604080516389a3027160e01b81529051620010c7936001600160a01b03909316926389a3027192600480820193918290030181865afa1580156200108a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010b0919062001f1c565b601c546001600160a01b0390811691161462001913565b6020805460408051635c3c8f7160e11b8152905162000631936001600160a01b039093169263b8791ee292600480820193918290030181865afa15801562001113573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001139919062001e90565b601e541462001913565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000b01578382906000526020600020018054620011899062001eaa565b80601f0160208091040260200160405190810160405280929190818152602001828054620011b79062001eaa565b8015620012085780601f10620011dc5761010080835404028352916020019162001208565b820191906000526020600020905b815481529060010190602001808311620011ea57829003601f168201915b50505050508152602001906001019062001167565b60008054610100900460ff16156200123e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200134d5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091620012cf917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001f47565b60408051601f1981840301815290829052620012eb9162001f7a565b6000604051808303816000865af19150503d80600081146200132a576040519150601f19603f3d011682016040523d82523d6000602084013e6200132f565b606091505b509150508080602001905181019062001349919062001e41565b9150505b919050565b60006200137b604051806040016040528060048152602001637762746360e01b815250620018ff565b601c5460405191925060009183916001600160a01b031690610fa090620013a29062001bc9565b620013b09392919062001dae565b604051809103906000f080158015620013cd573d6000803e3d6000fd5b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200142b57600080fd5b505af115801562001440573d6000803e3d6000fd5b505060205460405163feefb56360e01b81526001600160a01b03909116925063feefb563915062001478908590859060040162001ee7565b600060405180830381600087803b1580156200149357600080fd5b505af1158015620014a8573d6000803e3d6000fd5b5050602054601c54604051634851d6c560e11b81526001600160a01b0387811660048301529182166024820152620015479450911691506390a3ad8a906044015b602060405180830381865afa15801562001507573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200152d919062001f1c565b6001600160a01b0316826001600160a01b03161462001913565b5050565b601d54601c546040516000926001600160a01b03908116921690610fa090620015749062001bc9565b620015829392919062001dae565b604051809103906000f0801580156200159f573d6000803e3d6000fd5b50905060008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620015f057600080fd5b505af115801562001605573d6000803e3d6000fd5b5050602054601d5460405163feefb56360e01b81526001600160a01b03928316945063feefb5639350620009e09290911690859060040162001dd5565b60008051602062004c9183398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200169057600080fd5b505af1158015620016a5573d6000803e3d6000fd5b5050601f54604051630bbceb3360e21b81526001600160a01b039091169250632ef3accc9150620016dc9060649060040162001f98565b602060405180830381865afa158015620016fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087f919062001e90565b6060600c8054806020026020016040519081016040528092919081815260200182805480156200068d576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200066e575050505050905090565b601d54601c546040516000926001600160a01b03908116921690610fa090620017ab9062001bc9565b620017b99392919062001dae565b604051809103906000f080158015620017d6573d6000803e3d6000fd5b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200183457600080fd5b505af115801562001849573d6000803e3d6000fd5b5050602054601d5460405163feefb56360e01b81526001600160a01b03928316945063feefb5639350620018869290911690859060040162001dd5565b600060405180830381600087803b158015620018a157600080fd5b505af1158015620018b6573d6000803e3d6000fd5b5050602054601d54601c54604051634851d6c560e11b81526001600160a01b03928316600482015290821660248201526200087f9450911691506390a3ad8a90604401620014e9565b60006200190c8262001997565b5092915050565b806200087f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019799060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a16200087f62001ab6565b6200087f811562001913565b60008082604051602001620019ad919062001f7a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001a19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3f919062001f1c565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001a7d908590879060040162001fca565b600060405180830381600087803b15801562001a9857600080fd5b505af115801562001aad573d6000803e3d6000fd5b50505050915091565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001bb85760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001b53929160200162001f47565b60408051601f198184030181529082905262001b6f9162001f7a565b6000604051808303816000865af19150503d806000811462001bae576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb3565b606091505b505050505b6000805461ff001916610100179055565b6109268062001ff983390190565b612372806200291f83390190565b6020808252825182820181905260009190848201906040850190845b8181101562001c285783516001600160a01b03168352928401929184019160010162001c01565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001cdc57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001cc65783516001600160e01b0319168252928b019260019290920191908b019062001c9a565b50978a0197955050509187019160010162001c5c565b50919998505050505050505050565b60005b8381101562001d0857818101518382015260200162001cee565b83811115620005315750506000910152565b6000815180845262001d3481602086016020860162001ceb565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001da157603f1988860301845262001d8e85835162001d1a565b9450928501929085019060010162001d6f565b5092979650505050505050565b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b6001600160a01b0383811682526060602083018190526003908301526208aa8960eb1b608083015260009060a083015b91508084166040840152509392505050565b60208152600062001e3b60208301600381526208aa8960eb1b602082015260400190565b92915050565b60006020828403121562001e5457600080fd5b8151801515811462001e6557600080fd5b9392505050565b60208152600062001e3b60208301600381526242544360e81b602082015260400190565b60006020828403121562001ea357600080fd5b5051919050565b600181811c9082168062001ebf57607f821691505b6020821081141562001ee157634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0383811682526060602083018190526003908301526242544360e81b608083015260009060a0830162001e05565b60006020828403121562001f2f57600080fd5b81516001600160a01b038116811462001e6557600080fd5b6001600160e01b031983168152815160009062001f6c81600485016020870162001ceb565b919091016004019392505050565b6000825162001f8e81846020870162001ceb565b9190910192915050565b60408152600062001fbc60408301600381526242544360e81b602082015260400190565b905082602083015292915050565b6001600160a01b038316815260406020820181905260009062001ff09083018462001d1a565b94935050505056fe60c060405234801561001057600080fd5b5060405161092638038061092683398101604081905261002f91610134565b6000610047848460006100ad60201b61050d1760201c565b80516001600160a01b0390811660805260208201511660a0526000805461ffff60281b19166501000000000061ffff86160217905590505b61ffff8216156100a457600180548101815560005261009d82610182565b915061007f565b505050506101ae565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156100e8579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b80516001600160a01b038116811461012f57600080fd5b919050565b60008060006060848603121561014957600080fd5b61015284610118565b925061016060208501610118565b9150604084015161ffff8116811461017757600080fd5b809150509250925092565b600061ffff8216806101a457634e487b7160e01b600052601160045260246000fd5b6000190192915050565b60805160a0516107546101d2600039600061014b01526000606c01526107546000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630dfe168114610067578063252c09d7146100ab5780633850c7bd146100e557806346d61dc014610131578063d21220a714610146578063f814bf531461016d575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610578565b610180565b6040805163ffffffff909416845260069290920b60208401521515908201526060016100a2565b60005461010c90600281900b9061ffff630100000082048116916501000000000090041683565b6040805160029490940b845261ffff92831660208501529116908201526060016100a2565b61014461013f3660046105dd565b6101be565b005b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b61014461017b366004610649565b610424565b6001818154811061019057600080fd5b60009182526020909120015463ffffffff81169150640100000000810460060b90600160581b900460ff1683565b8281146102575760405162461bcd60e51b815260206004820152605660248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527574687320286d757374206265206d61746368696e672960501b608482015260a4015b60405180910390fd5b60005465010000000000900461ffff168311156103175760405162461bcd60e51b815260206004820152606c60248201527f4d6f636b556e69737761705633506f6f6c237365744f62736572766174696f6e60448201527f732063616c6c6564207769746820696e76616c6964206172726179206c656e6760648201527f74687320286d757374206265203c20736c6f74302e6f62736572766174696f6e60848201526b43617264696e616c6974792960a01b60a482015260c40161024e565b60005b8381101561041d57604051806060016040528086868481811061033f5761033f61068f565b905060200201602081019061035491906106a5565b63ffffffff1681526020018484848181106103715761037161068f565b905060200201602081019061038691906106d2565b60060b815260200160011515815250600182815481106103a8576103a861068f565b6000918252602091829020835191018054928401516040909401511515600160581b0260ff60581b1966ffffffffffffff909516640100000000026affffffffffffffffffffff1990941663ffffffff909316929092179290921792909216919091179055610416816106f5565b905061031a565b5050505050565b60005461ffff650100000000009091048116908216106104e35760405162461bcd60e51b815260206004820152606860248201527f4d6f636b556e69737761705633506f6f6c23736574536c6f74302063616c6c6560448201527f64207769746820696e76616c6964206f62736572766174696f6e496e6465782060648201527f286d757374206265203c20736c6f74302e6f62736572766174696f6e43617264608482015267696e616c6974792960c01b60a482015260c40161024e565b6000805461ffff90921663010000000264ffffffffff1990921662ffffff90931692909217179055565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115610548579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b60006020828403121561058a57600080fd5b5035919050565b60008083601f8401126105a357600080fd5b50813567ffffffffffffffff8111156105bb57600080fd5b6020830191508360208260051b85010111156105d657600080fd5b9250929050565b600080600080604085870312156105f357600080fd5b843567ffffffffffffffff8082111561060b57600080fd5b61061788838901610591565b9096509450602087013591508082111561063057600080fd5b5061063d87828801610591565b95989497509550505050565b6000806040838503121561065c57600080fd5b82358060020b811461066d57600080fd5b9150602083013561ffff8116811461068457600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156106b757600080fd5b813563ffffffff811681146106cb57600080fd5b9392505050565b6000602082840312156106e457600080fd5b81358060060b81146106cb57600080fd5b600060001982141561071757634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122034fcefcdf9029a0bad5874692cfabe102d1232edc527549319c70c7eb00f529e64736f6c634300080c003360c06040523480156200001157600080fd5b5060405162002372380380620023728339810160408190526200003491620000d4565b6200003f3362000067565b6200004a8462000067565b6001600160a01b03928316608052911660a0526001555062000126565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000cf57600080fd5b919050565b60008060008060808587031215620000eb57600080fd5b620000f685620000b7565b93506200010660208601620000b7565b92506200011660408601620000b7565b6060959095015193969295505050565b60805160a0516121ee620001846000396000818161025d0152818161054f01526107810152600081816102ce0152818161036a015281816105dc01528181610628015281816106ae0152818161129f01526112d401526121ee6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063b8791ee211610071578063b8791ee2146102f0578063d45bd6b1146102f9578063ef25868b1461030c578063f2fde38b14610340578063feefb5631461035357600080fd5b80638da5cb5b1461027f5780638f5dab9a1461029057806390a3ad8a146102a3578063a6fe34c6146102b6578063ad5c4648146102c957600080fd5b806357fa59eb116100f457806357fa59eb146101fd5780636a3b312a14610210578063715018a61461023d5780637c6619491461024557806389a302711461025857600080fd5b806213b4fc1461013057806301276acf146101565780630d3652ec146101975780631f455922146101d55780632ef3accc146101ea575b600080fd5b61014361013e366004611833565b610366565b6040519081526020015b60405180910390f35b61017f61016436600461186b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161014d565b6101c56101a53660046118cb565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161014d565b6101e86101e33660046119a9565b6103b8565b005b6101436101f83660046119eb565b6104a7565b61014361020b366004611a5b565b61057f565b61022361021e366004611ac9565b610598565b60408051600293840b81529190920b60208201520161014d565b6101e86105c4565b610143610253366004611b02565b6105d8565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661017f565b61014361029e366004611b4a565b610677565b61017f6102b1366004611bbb565b610699565b6101436102c4366004611be9565b6106aa565b61017f7f000000000000000000000000000000000000000000000000000000000000000081565b61014360015481565b6101e861030736600461186b565b6106eb565b61017f61031a3660046118cb565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6101e861034e366004611c1e565b6106f8565b6101e8610361366004611c3b565b610771565b60007f00000000000000000000000000000000000000000000000000000000000000008161039d6103988387846109c0565b610a2b565b90506103ac8287878488610a7e565b925050505b9392505050565b6103c0610b18565b600382826040516103d2929190611c98565b9081526040519081900360200190205460ff1661042c5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064015b60405180910390fd5b600060038383604051610440929190611c98565b908152604051908190036020018120805492151560ff19909316929092179091556000906002906104749085908590611c98565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b6000600384846040516104bb929190611c98565b9081526040519081900360200190205460ff166105105760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b6044820152606401610423565b600060028585604051610524929190611c98565b908152602001604051809103902060009054906101000a90046001600160a01b0316905061057681847f00000000000000000000000000000000000000000000000000000000000000006001546105d8565b95945050505050565b600061058d82858786610b72565b90505b949350505050565b6000806000806105a786610c80565b90945091506105b68686610f8c565b509396939550929350505050565b6105cc610b18565b6105d660006111d3565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156106265761061f848484610366565b9050610590565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561066b5761061f8585846106aa565b61061f85858585611223565b600061068f86866001600160801b031686868661128c565b9695505050505050565b60006103b1610398848460006109c0565b60007f0000000000000000000000000000000000000000000000000000000000000000816106dc6103988784846109c0565b90506103ac8686848488610a7e565b6106f3610b18565b600155565b610700610b18565b6001600160a01b0381166107655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610423565b61076e816111d3565b50565b610779610b18565b60006107a7857f000000000000000000000000000000000000000000000000000000000000000060006109c0565b90506001600160a01b0382161561090057816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190611ca8565b6001600160a01b031681600001516001600160a01b03161480156108b45750816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190611ca8565b6001600160a01b031681602001516001600160a01b0316145b6109005760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e73206f7220706f6f6c206e6f7420636f72726563740000000000006044820152606401610423565b816004600061090e84611304565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460028585604051610953929190611c98565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160038585604051610999929190611c98565b908152604051908190036020019020805491151560ff199092169190911790555050505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b031611156109fb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000610a368261134e565b90506001600160a01b038116610a795781516020830151604051634e8a64e960e01b81526001600160a01b03928316600482015291166024820152604401610423565b919050565b6000806000806000610a8f87610c80565b9094509250610aa687610aa18861137d565b610f8c565b909250905060006001600160a01b03808a16908c161015610add578260020b8560020b12610ad45782610ad6565b845b9050610af5565b8260020b8560020b13610af05782610af2565b845b90505b610b0981610b028c6113e2565b8d8c610b72565b9b9a5050505050505050505050565b6000546001600160a01b031633146105d65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610423565b600080610b7e8661144b565b90506001600160801b036001600160a01b03821611610c04576000610bac6001600160a01b03831680611cdb565b9050836001600160a01b0316856001600160a01b031610610be457610bdf600160c01b876001600160801b03168361176b565b610bfc565b610bfc81876001600160801b0316600160c01b61176b565b925050610c77565b6000610c236001600160a01b038316806801000000000000000061176b565b9050836001600160a01b0316856001600160a01b031610610c5b57610c56600160801b876001600160801b03168361176b565b610c73565b610c7381876001600160801b0316600160801b61176b565b9250505b50949350505050565b6000806000806000856001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea9190611d1c565b5050509350935093505060018161ffff1611610d2e5760405162461bcd60e51b81526020600482015260036024820152624e454f60e81b6044820152606401610423565b60405163252c09d760e01b815261ffff83166004820152600090819081906001600160a01b038a169063252c09d790602401608060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190611dc1565b509250925092504263ffffffff168363ffffffff1614610e2d5785896001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1e9190611e19565b97509750505050505050915091565b60008461ffff1660018661ffff168861ffff16610e4a9190611e36565b610e549190611e4e565b610e5e9190611e7b565b90506000806000808d6001600160a01b031663252c09d7866040518263ffffffff1660e01b8152600401610e9491815260200190565b608060405180830381865afa158015610eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed59190611dc1565b935093509350935080610f105760405162461bcd60e51b81526020600482015260036024820152624f4e4960e81b6044820152606401610423565b6000610f1c858a611e8f565b905063ffffffff8116610f2f858a611eb4565b610f399190611f04565b9b5060006020610f49858a611f42565b6001600160a01b0390811690911b90610f689063ffffffff8516611f62565b610f729190611f91565b90508c819e509e5050505050505050505050505050915091565b60008063ffffffff8316610fc75760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610423565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110610ffc57610ffc611fb7565b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061102b5761102b611fb7565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b81526004016110749190611fcd565b600060405180830381865afa158015611091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110b991908101906120af565b915091506000826000815181106110d2576110d2611fb7565b6020026020010151836001815181106110ed576110ed611fb7565b60200260200101516110ff9190611eb4565b905060008260008151811061111657611116611fb7565b60200260200101518360018151811061113157611131611fb7565b60200260200101516111439190611f42565b905061115563ffffffff891683611f04565b965060008260060b12801561117b575061117563ffffffff891683612172565b60060b15155b1561118e578661118a81612194565b9750505b60006111a76001600160a01b0363ffffffff8b16611f62565b90506111c4640100000000600160c01b03602084901b1682611f91565b96505050505050509250929050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061123a611235878660006109c0565b61134e565b90506001600160a01b03811615611260576112588686868487610a7e565b915050610590565b604051634e8a64e960e01b81526001600160a01b03808816600483015285166024820152604401610423565b6000806112c38461129c886113e2565b897f0000000000000000000000000000000000000000000000000000000000000000610b72565b90506112f9836112d2836113e2565b7f000000000000000000000000000000000000000000000000000000000000000088610b72565b979650505050505050565b8051602091820151604080516bffffffffffffffffffffffff19606094851b8116828701529290931b90911660348301528051808303602801815260489092019052805191012090565b60006004600061135d84611304565b81526020810191909152604001600020546001600160a01b031692915050565b8063ffffffff81168114610a795760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610423565b806001600160801b0381168114610a795760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610423565b60008060008360020b12611462578260020b61146a565b8260020b6000035b9050620d89e8811115611490576040516315e4079d60e11b815260040160405180910390fd5b6000600182166114a457600160801b6114b6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156114ea576ffff97272373d413259a46990580e213a0260801c5b6004821615611509576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611528576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611547576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611566576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611585576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156115a4576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156115c4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156115e4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611604576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611624576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611644576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611664576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611684576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156116a4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156116c5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156116e5576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611704576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611721576b048a170391f7dc42444e8fa20260801c5b60008460020b131561174257806000198161173e5761173e611e65565b0490505b640100000000810615611756576001611759565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600014156117a5576000841161179a57600080fd5b5082900490506103b1565b8084116117b157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6001600160a01b038116811461076e57600080fd5b60008060006060848603121561184857600080fd5b83359250602084013561185a8161181e565b929592945050506040919091013590565b60006020828403121561187d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118c3576118c3611884565b604052919050565b600060208083850312156118de57600080fd5b823567ffffffffffffffff808211156118f657600080fd5b818501915085601f83011261190a57600080fd5b81358181111561191c5761191c611884565b61192e601f8201601f1916850161189a565b9150808252868482850101111561194457600080fd5b8084840185840137600090820190930192909252509392505050565b60008083601f84011261197257600080fd5b50813567ffffffffffffffff81111561198a57600080fd5b6020830191508360208285010111156119a257600080fd5b9250929050565b600080602083850312156119bc57600080fd5b823567ffffffffffffffff8111156119d357600080fd5b6119df85828601611960565b90969095509350505050565b600080600060408486031215611a0057600080fd5b833567ffffffffffffffff811115611a1757600080fd5b611a2386828701611960565b909790965060209590950135949350505050565b6001600160801b038116811461076e57600080fd5b8060020b811461076e57600080fd5b60008060008060808587031215611a7157600080fd5b8435611a7c8161181e565b93506020850135611a8c81611a37565b92506040850135611a9c8161181e565b91506060850135611aac81611a4c565b939692955090935050565b63ffffffff8116811461076e57600080fd5b60008060408385031215611adc57600080fd5b8235611ae78161181e565b91506020830135611af781611ab7565b809150509250929050565b60008060008060808587031215611b1857600080fd5b8435611b238161181e565b9350602085013592506040850135611b3a8161181e565b9396929550929360600135925050565b600080600080600060a08688031215611b6257600080fd5b8535611b6d8161181e565b94506020860135611b7d81611a37565b93506040860135611b8d8161181e565b92506060860135611b9d81611a4c565b91506080860135611bad81611a4c565b809150509295509295909350565b60008060408385031215611bce57600080fd5b8235611bd98161181e565b91506020830135611af78161181e565b600080600060608486031215611bfe57600080fd5b8335611c098161181e565b95602085013595506040909401359392505050565b600060208284031215611c3057600080fd5b81356103b18161181e565b60008060008060608587031215611c5157600080fd5b8435611c5c8161181e565b9350602085013567ffffffffffffffff811115611c7857600080fd5b611c8487828801611960565b9094509250506040850135611aac8161181e565b8183823760009101908152919050565b600060208284031215611cba57600080fd5b81516103b18161181e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cf557611cf5611cc5565b500290565b805161ffff81168114610a7957600080fd5b80518015158114610a7957600080fd5b600080600080600080600060e0888a031215611d3757600080fd5b8751611d428161181e565b6020890151909750611d5381611a4c565b9550611d6160408901611cfa565b9450611d6f60608901611cfa565b9350611d7d60808901611cfa565b925060a088015160ff81168114611d9357600080fd5b9150611da160c08901611d0c565b905092959891949750929550565b8051600681900b8114610a7957600080fd5b60008060008060808587031215611dd757600080fd5b8451611de281611ab7565b9350611df060208601611daf565b92506040850151611e008161181e565b9150611e0e60608601611d0c565b905092959194509250565b600060208284031215611e2b57600080fd5b81516103b181611a37565b60008219821115611e4957611e49611cc5565b500190565b600082821015611e6057611e60611cc5565b500390565b634e487b7160e01b600052601260045260246000fd5b600082611e8a57611e8a611e65565b500690565b600063ffffffff83811690831681811015611eac57611eac611cc5565b039392505050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615611edf57611edf611cc5565b81667fffffffffffff018313811615611efa57611efa611cc5565b5090039392505050565b60008160060b8360060b80611f1b57611f1b611e65565b667fffffffffffff19821460001982141615611f3957611f39611cc5565b90059392505050565b60006001600160a01b0383811690831681811015611eac57611eac611cc5565b60006001600160c01b0382811684821681151582840482111615611f8857611f88611cc5565b02949350505050565b60006001600160c01b0383811680611fab57611fab611e65565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561200b57835163ffffffff1683529284019291840191600101611fe9565b50909695505050505050565b600067ffffffffffffffff82111561203157612031611884565b5060051b60200190565b600082601f83011261204c57600080fd5b8151602061206161205c83612017565b61189a565b82815260059290921b8401810191818101908684111561208057600080fd5b8286015b848110156120a45780516120978161181e565b8352918301918301612084565b509695505050505050565b600080604083850312156120c257600080fd5b825167ffffffffffffffff808211156120da57600080fd5b818501915085601f8301126120ee57600080fd5b815160206120fe61205c83612017565b82815260059290921b8401810191818101908984111561211d57600080fd5b948201945b838610156121425761213386611daf565b82529482019490820190612122565b9188015191965090935050508082111561215b57600080fd5b506121688582860161203b565b9150509250929050565b60008260060b8061218557612185611e65565b808360060b0791505092915050565b60008160020b627fffff198114156121ae576121ae611cc5565b600019019291505056fea2646970667358221220bbf12e190f519e18639783ed80d5dc10202cb112533d41caf7d427bed6867ab664736f6c634300080c0033885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212206839c661c11da1efd390156c279e824cc6c47f7ed877ed548c38c367d50caf4264736f6c634300080c0033","sourceMap":"394:3266:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:487;;;:::i;:::-;;2301:157;;;:::i;2161:134:26:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2006:118:83;;;:::i;2464:236::-;;;:::i;2930:133:26:-;;;:::i;2631:141::-;;;:::i;2706:172:83:-;;;:::i;2447:178:26:-;;;:::i;:::-;;;;;;;:::i;2130:165:83:-;;;:::i;2301:140:26:-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;3377:281:83:-;;;:::i;1131:291::-;;;:::i;1866:141:26:-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3750:14:120;;3743:22;3725:41;;3713:2;3698:18;1819:584:20;3585:187:120;3008:363:83;;;:::i;1758:242::-;;;:::i;2884:118::-;;;:::i;2013:142:26:-;;;:::i;1428:324:83:-;;;:::i;1572:26:20:-;;;;;;;;;638:487:83;681:17;;;;;;;;;;;;;;-1:-1:-1;;;681:17:83;;;:8;:17::i;:::-;672:6;:26;;-1:-1:-1;;;;;;672:26:83;-1:-1:-1;;;;;672:26:83;;;;;;;;;;716:16;;;;;;;;;;;;-1:-1:-1;;;716:16:83;;;;;;:8;:16::i;:::-;708:5;:24;;-1:-1:-1;;;;;;708:24:83;-1:-1:-1;;;;;708:24:83;;;;;;;;;;750:16;;;;;;;;;;;;-1:-1:-1;;;750:16:83;;;;;;:8;:16::i;:::-;742:5;:24;;-1:-1:-1;;;;;;742:24:83;-1:-1:-1;;;;;742:24:83;;;;;;;;;817:5;;788:41;;742:24;;817:5;;824:4;;788:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;776:9:83;:53;;-1:-1:-1;;;;;;776:53:83;-1:-1:-1;;;;;776:53:83;;;;;;860:1;839:18;:22;;;912:6;;920:5;;927;;887:66;;912:6;;;;920:5;;;;927;;;887:66;;;:::i;:::-;-1:-1:-1;;;;;4467:15:120;;;4449:34;;4519:15;;;4514:2;4499:18;;4492:43;4571:15;;4566:2;4551:18;;4544:43;4618:2;4603:18;;4596:34;;;;4398:3;4383:19;887:66:83;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;871:13:83;:82;;-1:-1:-1;;;;;871:82:83;;;-1:-1:-1;;;;;;871:82:83;;;;;;;;963:9;:52;;;;;;;;;;1034:6;;1025:16;;-1:-1:-1;;;1025:16:83;;1034:6;;1025:16;;;4787:51:120;1025:8:83;;;;4760:18:120;;1025:16:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1051:13:83;;1085:5;;1107:9;;1051:67;;-1:-1:-1;;;1051:67:83;;-1:-1:-1;;;;;1051:13:83;;;;-1:-1:-1;1051:33:83;;-1:-1:-1;1051:67:83;;1085:5;;;;1107:9;;;;1051:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:487::o;2301:157::-;2361:9;;:33;;-1:-1:-1;;;2361:33:83;;2350:45;;-1:-1:-1;;;;;2361:9:83;;:26;;:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2350:10;:45::i;:::-;2417:9;;:33;;-1:-1:-1;;;2417:33:83;;2405:46;;-1:-1:-1;;;;;2417:9:83;;:26;;:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2405:11;:46::i;:::-;2301:157::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2006:118:83:-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2058:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2085:13:83;;:32;;-1:-1:-1;;;2085:32:83;;-1:-1:-1;;;;;2085:13:83;;;;-1:-1:-1;2085:25:83;;-1:-1:-1;2085:32:83;;;;;:::i;2464:236::-;2563:6;;2554:16;;-1:-1:-1;;;2554:16:83;;-1:-1:-1;;;;;2563:6:83;;;2554:16;;;4787:51:120;2542:2:83;;2554:8;;;;4760:18:120;;2554:16:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2580:13:83;;:45;;-1:-1:-1;;;2580:45:83;;;;;6633:25:120;;;-1:-1:-1;;;;;2580:13:83;;;;-1:-1:-1;2580:34:83;;-1:-1:-1;6606:18:120;;2580:45:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2659:13:83;;;:33;;;-1:-1:-1;;;2659:33:83;;;;2635:58;;-1:-1:-1;;;;;;2659:13:83;;;;-1:-1:-1;2659:31:83;;:33;;;;;:13;;:33;;;;;:13;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2646:9;:46;2635:10;:58::i;:::-;2512:188;2464:236::o;2930:133:26:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2706:172:83:-;2767:17;2787:2;2767:22;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2799:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2826:13:83;;:45;;-1:-1:-1;;;2826:45:83;;;;;6633:25:120;;;-1:-1:-1;;;;;2826:13:83;;;;-1:-1:-1;2826:34:83;;-1:-1:-1;6606:18:120;;2826:45:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2757:121;2706:172::o;2447:178:26:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2130:165:83:-;2183:6;;2174:16;;-1:-1:-1;;;2174:16:83;;-1:-1:-1;;;;;2183:6:83;;;2174:16;;;4787:51:120;2174:8:83;;;;4760:18:120;;2174:16:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2200:13:83;;:32;;-1:-1:-1;;;2200:32:83;;-1:-1:-1;;;;;2200:13:83;;;;-1:-1:-1;2200:25:83;;-1:-1:-1;2200:32:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2254:9:83;;:33;;-1:-1:-1;;;2254:33:83;;2242:46;;-1:-1:-1;;;;;;2254:9:83;;;;-1:-1:-1;2254:26:83;;:33;;;;;:::i;2301:140:26:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3377:281:83;3436:13;3452:16;;;;;;;;;;;;;;-1:-1:-1;;;3452:16:83;;;:8;:16::i;:::-;3536:5;;3507:41;;3436:32;;-1:-1:-1;3478:26:83;;3436:32;;-1:-1:-1;;;;;3536:5:83;;3543:4;;3507:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3478:70;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;3558:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3585:13:83;;:66;;-1:-1:-1;;;3585:66:83;;-1:-1:-1;;;;;3585:13:83;;;;-1:-1:-1;3585:33:83;;-1:-1:-1;3585:66:83;;3619:5;;3641:8;;3585:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3426:232;;3377:281::o;1131:291::-;1216:9;;1200:35;;;-1:-1:-1;;;1200:35:83;;;;1179:57;;-1:-1:-1;;;;;1216:9:83;;1200:33;;:35;;;;;;;;;;;;;;1216:9;1200:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1190:6;;-1:-1:-1;;;;;1190:6:83;;;:45;;;1179:10;:57::i;:::-;1266:13;;;:20;;;-1:-1:-1;;;1266:20:83;;;;1246:41;;-1:-1:-1;;;;;1266:13:83;;;;:18;;:20;;;;;;;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1257:5;;-1:-1:-1;;;;;1257:5:83;;;:29;;;1246:10;:41::i;:::-;1317:13;;;:20;;;-1:-1:-1;;;1317:20:83;;;;1297:41;;-1:-1:-1;;;;;1317:13:83;;;;:18;;:20;;;;;;;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:5;;-1:-1:-1;;;;;1308:5:83;;;:29;;;1297:10;:41::i;:::-;1381:13;;;:33;;;-1:-1:-1;;;1381:33:83;;;;1348:67;;-1:-1:-1;;;;;1381:13:83;;;;:31;;:33;;;;;;;;;;;:13;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1359:18;;:55;1348:10;:67::i;1866:141:26:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;8595:51:120;;;-1:-1:-1;;;8662:18:120;;;8655:34;2196:43:20;;;;;;;;;8568:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;3008:363:83:-;3064:13;3080:16;;;;;;;;;;;;;;-1:-1:-1;;;3080:16:83;;;:8;:16::i;:::-;3164:5;;3135:41;;3064:32;;-1:-1:-1;3106:26:83;;3064:32;;-1:-1:-1;;;;;3164:5:83;;3171:4;;3135:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3195:6:83;;3186:16;;-1:-1:-1;;;3186:16:83;;-1:-1:-1;;;;;3195:6:83;;;3186:16;;;4787:51:120;3106:70:83;;-1:-1:-1;3186:8:83;;;;4760:18:120;;3186:16:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3212:13:83;;:66;;-1:-1:-1;;;3212:66:83;;-1:-1:-1;;;;;3212:13:83;;;;-1:-1:-1;3212:33:83;;-1:-1:-1;3212:66:83;;3246:5;;3268:8;;3212:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3320:13:83;;3357:5;;3320:43;;-1:-1:-1;;;3320:43:83;;-1:-1:-1;;;;;9585:15:120;;;3320:43:83;;;9567:34:120;3357:5:83;;;9617:18:120;;;9610:43;3288:76:83;;-1:-1:-1;3320:13:83;;;-1:-1:-1;3320:29:83;;9502:18:120;;3320:43:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3299:64:83;3307:8;-1:-1:-1;;;;;3299:64:83;;3288:10;:76::i;:::-;3054:317;;3008:363::o;1758:242::-;1871:5;;1878;;1849:41;;1820:26;;-1:-1:-1;;;;;1871:5:83;;;;1878;;1885:4;;1849:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1820:70;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1900:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1927:13:83;;1961:5;;1927:66;;-1:-1:-1;;;1927:66:83;;-1:-1:-1;;;;;1927:13:83;;;;-1:-1:-1;1927:33:83;;-1:-1:-1;1927:66:83;;1961:5;;;;1983:8;;1927:66;;;:::i;2884:118::-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2938:15:83;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2965:9:83;;:30;;-1:-1:-1;;;2965:30:83;;-1:-1:-1;;;;;2965:9:83;;;;-1:-1:-1;2965:18:83;;-1:-1:-1;2965:30:83;;2991:3;;2965:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;1428:324:83:-;1538:5;;1545;;1516:41;;1487:26;;-1:-1:-1;;;;;1538:5:83;;;;1545;;1552:4;;1516:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1576:6:83;;1567:16;;-1:-1:-1;;;1567:16:83;;-1:-1:-1;;;;;1576:6:83;;;1567:16;;;4787:51:120;1487:70:83;;-1:-1:-1;1567:8:83;;;;4760:18:120;;1567:16:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1593:13:83;;1627:5;;1593:66;;-1:-1:-1;;;1593:66:83;;-1:-1:-1;;;;;1593:13:83;;;;-1:-1:-1;1593:33:83;;-1:-1:-1;1593:66:83;;1627:5;;;;1649:8;;1593:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1701:13:83;;1731:5;;1738;;1701:43;;-1:-1:-1;;;1701:43:83;;-1:-1:-1;;;;;1731:5:83;;;1701:43;;;9567:34:120;1738:5:83;;;9617:18:120;;;9610:43;1669:76:83;;-1:-1:-1;1701:13:83;;;-1:-1:-1;1701:29:83;;9502:18:120;;1701:43:83;9355:304:120;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;3262:157:20:-;3322:9;3317:96;;3352:30;;;;;10229:2:120;10211:21;;;10268:2;10248:18;;;10241:30;10307:25;10302:2;10287:18;;10280:53;10365:2;10350:18;;10027:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;587:83:22:-;646:17;658:4;657:5;646:10;:17::i;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;6633:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;6606:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;2409:432:20:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;11184:51:120;;;-1:-1:-1;;;11251:18:120;;;11244:34;;;;2712:4:20;11294:18:120;;;11287:34;2489:11:20;;1671:64;2586:43;;11157:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;-1:-1:-1;;2499:1:120;2481:16;;2474:27;2251:258::o;2514:::-;2556:3;2594:5;2588:12;2621:6;2616:3;2609:19;2637:63;2693:6;2686:4;2681:3;2677:14;2670:4;2663:5;2659:16;2637:63;:::i;:::-;2754:2;2733:15;-1:-1:-1;;2729:29:120;2720:39;;;;2761:4;2716:50;;2514:258;-1:-1:-1;;2514:258:120:o;2777:803::-;2939:4;2968:2;3008;2997:9;2993:18;3038:2;3027:9;3020:21;3061:6;3096;3090:13;3127:6;3119;3112:22;3165:2;3154:9;3150:18;3143:25;;3227:2;3217:6;3214:1;3210:14;3199:9;3195:30;3191:39;3177:53;;3265:2;3257:6;3253:15;3286:1;3296:255;3310:6;3307:1;3304:13;3296:255;;;3403:2;3399:7;3387:9;3379:6;3375:22;3371:36;3366:3;3359:49;3431:40;3464:6;3455;3449:13;3431:40;:::i;:::-;3421:50;-1:-1:-1;3529:12:120;;;;3494:15;;;;3332:1;3325:9;3296:255;;;-1:-1:-1;3568:6:120;;2777:803;-1:-1:-1;;;;;;;2777:803:120:o;3777:398::-;-1:-1:-1;;;;;4045:15:120;;;4027:34;;4097:15;;;;4092:2;4077:18;;4070:43;4161:6;4149:19;;;4144:2;4129:18;;4122:47;3977:2;3962:18;;3777:398::o;5005:475::-;-1:-1:-1;;;;;5301:15:120;;;5283:34;;5353:2;5348;5333:18;;5326:30;;;4926:1;5403:18;;;4914:14;-1:-1:-1;;;4944:14:120;;;4937:29;5226:4;;5263:3;4982:12;;5373:49;5365:57;;5470:2;5462:6;5458:15;5453:2;5442:9;5438:18;5431:43;;5005:475;;;;;:::o;5485:277::-;5687:2;5676:9;5669:21;5650:4;5707:49;5752:2;5741:9;5737:18;4926:1;4914:14;;-1:-1:-1;;;4953:4:120;4944:14;;4937:29;4991:2;4982:12;;4849:151;5707:49;5699:57;5485:277;-1:-1:-1;;5485:277:120:o;5767:::-;5834:6;5887:2;5875:9;5866:7;5862:23;5858:32;5855:52;;;5903:1;5900;5893:12;5855:52;5935:9;5929:16;5988:5;5981:13;5974:21;5967:5;5964:32;5954:60;;6010:1;6007;6000:12;5954:60;6033:5;5767:277;-1:-1:-1;;;5767:277:120:o;6205:::-;6407:2;6396:9;6389:21;6370:4;6427:49;6472:2;6461:9;6457:18;6126:1;6114:14;;-1:-1:-1;;;6153:4:120;6144:14;;6137:29;6191:2;6182:12;;6049:151;6669:184;6739:6;6792:2;6780:9;6771:7;6767:23;6763:32;6760:52;;;6808:1;6805;6798:12;6760:52;-1:-1:-1;6831:16:120;;6669:184;-1:-1:-1;6669:184:120:o;6858:380::-;6937:1;6933:12;;;;6980;;;7001:61;;7055:4;7047:6;7043:17;7033:27;;7001:61;7108:2;7100:6;7097:14;7077:18;7074:38;7071:161;;;7154:10;7149:3;7145:20;7142:1;7135:31;7189:4;7186:1;7179:15;7217:4;7214:1;7207:15;7071:161;;6858:380;;;:::o;7646:475::-;-1:-1:-1;;;;;7942:15:120;;;7924:34;;7994:2;7989;7974:18;;7967:30;;;6126:1;8044:18;;;6114:14;-1:-1:-1;;;6144:14:120;;;6137:29;7867:4;;7904:3;6182:12;;8014:49;6049:151;8126:290;8196:6;8249:2;8237:9;8228:7;8224:23;8220:32;8217:52;;;8265:1;8262;8255:12;8217:52;8291:16;;-1:-1:-1;;;;;8336:31:120;;8326:42;;8316:70;;8382:1;8379;8372:12;8700:371;-1:-1:-1;;;;;;8885:33:120;;8873:46;;8942:13;;8855:3;;8964:61;8942:13;9014:1;9005:11;;8998:4;8986:17;;8964:61;:::i;:::-;9045:16;;;;9063:1;9041:24;;8700:371;-1:-1:-1;;;8700:371:120:o;9076:274::-;9205:3;9243:6;9237:13;9259:53;9305:6;9300:3;9293:4;9285:6;9281:17;9259:53;:::i;:::-;9328:16;;;;;9076:274;-1:-1:-1;;9076:274:120:o;9664:358::-;9904:2;9893:9;9886:21;9867:4;9924:49;9969:2;9958:9;9954:18;6126:1;6114:14;;-1:-1:-1;;;6153:4:120;6144:14;;6137:29;6191:2;6182:12;;6049:151;9924:49;9916:57;;10009:6;10004:2;9993:9;9989:18;9982:34;9664:358;;;;:::o;10660:317::-;-1:-1:-1;;;;;10837:32:120;;10819:51;;10906:2;10901;10886:18;;10879:30;;;-1:-1:-1;;10926:45:120;;10952:18;;10944:6;10926:45;:::i;:::-;10918:53;10660:317;-1:-1:-1;;;;10660:317:120:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","getPriceTokenNotSupported()":"d4d58a3f","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testConstructorArgs()":"a87c42e8","testNotOwnerAddingTokenSupport()":"98fb88ee","testNotOwnerOveriddenPoolForRoute()":"cb5e0294","testNotOwnerSetDefaultTwapPeriod()":"41b1ccb4","testOwnerAddingTokenSupport()":"c1a23ea5","testOwnerOveriddenPoolForRoute()":"edb50121","testOwnerSetDefaultTwapPeriod()":"3d8c48fe","testRemoveToken()":"7e9f2b22","testRemoveTokenNotOwner()":"3085c76b","testTokenIDSupported()":"1a655f52"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"getPriceTokenNotSupported\",\"outputs\":[],\"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\":\"testConstructorArgs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNotOwnerAddingTokenSupport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNotOwnerOveriddenPoolForRoute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNotOwnerSetDefaultTwapPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerAddingTokenSupport\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerOveriddenPoolForRoute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerSetDefaultTwapPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRemoveTokenNotOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTokenIDSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PriceAggregatorUniV3.t.sol\":\"PriceAggregatorUniV3Test\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/utils/SafeCast.sol\":{\"keccak256\":\"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650\",\"dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df\",\"dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E\"]},\"src/PriceAggregatorUniV3.sol\":{\"keccak256\":\"0x0424fc4b6c7de9109aeafa4b76852d8dfc8ad438356c51fa3e60f3ca551df16a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b118d90d534ce8605e15306f99997def0956c3616e20ee7758b9878f6e401416\",\"dweb:/ipfs/QmSrBW1e3SNHrMpjyAyJzveEjSPQk68SwhsbRPtuBmSST6\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]},\"test/PriceAggregatorUniV3.t.sol\":{\"keccak256\":\"0xbf206b837bfd4d2db3f4f8ca3d91760ef35ce7ccc37b3458aa48e7c016e635aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abfeec17c878c6cd7bfa7d5df69b96fe7f09709648e4f1c9f6e83adc81c75a84\",\"dweb:/ipfs/Qmaf8BH6LbWU63FRtxbWmu6TqiReipqLZKLVCZNwCpt2uS\"]},\"test/mocks/MockPriceAggregator.sol\":{\"keccak256\":\"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c\",\"dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo\"]},\"test/mocks/MockUniswapV3Pool.sol\":{\"keccak256\":\"0x409cdf07665b4eac9b4ec77a76b04c5097c06434fc6613aef3969dd58b9beda0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fb78ec12fb6f64ce1e056cc25ded3075abae785666540e6c5dee633e960fffa7\",\"dweb:/ipfs/QmdNXdkywQA1rinQFxyKsWpsSLhABFoaQV3YYpyc1T1xT9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"getPriceTokenNotSupported"},{"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":"testConstructorArgs"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNotOwnerAddingTokenSupport"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNotOwnerOveriddenPoolForRoute"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNotOwnerSetDefaultTwapPeriod"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerAddingTokenSupport"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerOveriddenPoolForRoute"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerSetDefaultTwapPeriod"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveToken"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRemoveTokenNotOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTokenIDSupported"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PriceAggregatorUniV3.t.sol":"PriceAggregatorUniV3Test"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/utils/SafeCast.sol":{"keccak256":"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21","urls":["bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650","dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy"],"license":"BUSL-1.1"},"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol":{"keccak256":"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968","urls":["bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e","dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol":{"keccak256":"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634","urls":["bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5","dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol":{"keccak256":"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5","urls":["bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7","dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol":{"keccak256":"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b","urls":["bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa","dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol":{"keccak256":"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd","urls":["bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03","dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol":{"keccak256":"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7","urls":["bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047","dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol":{"keccak256":"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235","urls":["bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735","dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol":{"keccak256":"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43","urls":["bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea","dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp"],"license":"GPL-2.0-or-later"},"lib/v3-core/contracts/libraries/FullMath.sol":{"keccak256":"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645","urls":["bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125","dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd"],"license":"MIT"},"lib/v3-core/contracts/libraries/TickMath.sol":{"keccak256":"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129","urls":["bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c","dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/OracleLibrary.sol":{"keccak256":"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b","urls":["bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53","dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM"],"license":"GPL-2.0-or-later"},"lib/v3-periphery/contracts/libraries/PoolAddress.sol":{"keccak256":"0xa72de315bd655a0fd5043ff97c7fd3868a1b5b1986afd75c6f5f8fd0f904985f","urls":["bzz-raw://a8838e68aba9caf2b2cb13bd4cb661b1f9c167cca4dfcd50ac72ae96691392df","dweb:/ipfs/QmfLq3cmsSQTuLLxiF4bgceaf2jx8CoiVXQd7BZXGgJG1E"],"license":"GPL-2.0-or-later"},"src/PriceAggregatorUniV3.sol":{"keccak256":"0x0424fc4b6c7de9109aeafa4b76852d8dfc8ad438356c51fa3e60f3ca551df16a","urls":["bzz-raw://b118d90d534ce8605e15306f99997def0956c3616e20ee7758b9878f6e401416","dweb:/ipfs/QmSrBW1e3SNHrMpjyAyJzveEjSPQk68SwhsbRPtuBmSST6"],"license":"BUSL-1.1"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"},"test/PriceAggregatorUniV3.t.sol":{"keccak256":"0xbf206b837bfd4d2db3f4f8ca3d91760ef35ce7ccc37b3458aa48e7c016e635aa","urls":["bzz-raw://abfeec17c878c6cd7bfa7d5df69b96fe7f09709648e4f1c9f6e83adc81c75a84","dweb:/ipfs/Qmaf8BH6LbWU63FRtxbWmu6TqiReipqLZKLVCZNwCpt2uS"],"license":"MIT"},"test/mocks/MockPriceAggregator.sol":{"keccak256":"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1","urls":["bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c","dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo"],"license":"BUSL-1.1"},"test/mocks/MockUniswapV3Pool.sol":{"keccak256":"0x409cdf07665b4eac9b4ec77a76b04c5097c06434fc6613aef3969dd58b9beda0","urls":["bzz-raw://fb78ec12fb6f64ce1e056cc25ded3075abae785666540e6c5dee633e960fffa7","dweb:/ipfs/QmdNXdkywQA1rinQFxyKsWpsSLhABFoaQV3YYpyc1T1xT9"],"license":"UNLICENSED"}},"version":1},"id":83} \ No newline at end of file diff --git a/out/Proxy.sol/Proxy.json b/out/Proxy.sol/Proxy.json new file mode 100644 index 00000000..bbfe4cc5 --- /dev/null +++ b/out/Proxy.sol/Proxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":"Proxy"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file diff --git a/out/ProxyAdmin.sol/ProxyAdmin.json b/out/ProxyAdmin.sol/ProxyAdmin.json new file mode 100644 index 00000000..e779d9c8 --- /dev/null +++ b/out/ProxyAdmin.sol/ProxyAdmin.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"changeProxyAdmin","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"},{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getProxyAdmin","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getProxyImplementation","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgrade","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"},{"name":"implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeAndCall","inputs":[{"name":"proxy","type":"address","internalType":"contract TransparentUpgradeableProxy"},{"name":"implementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212208ed8f908a50850ae2b3f24d98bed9277afb4043064f0ebbedd28b6f8d2a35f4664736f6c634300080c0033","sourceMap":"435:2404:48:-:0;;;;;;;;;;;;-1:-1:-1;936:32:41;719:10:52;936:18:41;:32::i;:::-;435:2404:48;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;435:2404:48:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212208ed8f908a50850ae2b3f24d98bed9277afb4043064f0ebbedd28b6f8d2a35f4664736f6c634300080c0033","sourceMap":"435:2404:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;635:437;;;;;;;;;;-1:-1:-1;635:437:48;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;661:32:120;;;643:51;;631:2;616:18;635:437:48;;;;;;;1831:101:41;;;;;;;;;;;;;:::i;:::-;;1825:148:48;;;;;;;;;;-1:-1:-1;1825:148:48;;;;;:::i;:::-;;:::i;1201:85:41:-;;;;;;;;;;-1:-1:-1;1247:7:41;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;2593:244:48;;;;;;:::i;:::-;;:::i;2178:149::-;;;;;;;;;;-1:-1:-1;2178:149:48;;;;;:::i;:::-;;:::i;2081:198:41:-;;;;;;;;;;-1:-1:-1;2081:198:41;;;;;:::i;:::-;;:::i;1232:419:48:-;;;;;;;;;;-1:-1:-1;1232:419:48;;;;;:::i;:::-;;:::i;635:437::-;731:7;908:12;922:23;957:5;-1:-1:-1;;;;;949:25:48;:40;;;;-1:-1:-1;;;3104:33:120;;3162:1;3153:11;;2903:267;949:40:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;907:82;;;;1007:7;999:16;;;;;;1043:10;1032:33;;;;;;;;;;;;:::i;:::-;1025:40;635:437;-1:-1:-1;;;;635:437:48:o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1825:148:48:-;1094:13:41;:11;:13::i;:::-;1939:27:48::1;::::0;-1:-1:-1;;;1939:27:48;;-1:-1:-1;;;;;661:32:120;;;1939:27:48::1;::::0;::::1;643:51:120::0;1939:17:48;::::1;::::0;::::1;::::0;616:18:120;;1939:27:48::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1825:148:::0;;:::o;2593:244::-;1094:13:41;:11;:13::i;:::-;2768:62:48::1;::::0;-1:-1:-1;;;2768:62:48;;-1:-1:-1;;;;;2768:22:48;::::1;::::0;::::1;::::0;2798:9:::1;::::0;2768:62:::1;::::0;2809:14;;2825:4;;2768:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;2593:244:::0;;;:::o;2178:149::-;1094:13:41;:11;:13::i;:::-;2289:31:48::1;::::0;-1:-1:-1;;;2289:31:48;;-1:-1:-1;;;;;661:32:120;;;2289:31:48::1;::::0;::::1;643:51:120::0;2289:15:48;::::1;::::0;::::1;::::0;616:18:120;;2289:31:48::1;497:203:120::0;2081:198:41;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;4367:2:120;2161:73:41::1;::::0;::::1;4349:21:120::0;4406:2;4386:18;;;4379:30;4445:34;4425:18;;;4418:62;-1:-1:-1;;;4496:18:120;;;4489:36;4542:19;;2161:73:41::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1232:419:48:-;1319:7;1487:12;1501:23;1536:5;-1:-1:-1;;;;;1528:25:48;:40;;;;-1:-1:-1;;;4773:33:120;;4831:1;4822:11;;4572:267;1359:130:41;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;5046:2:120;1414:68:41;;;5028:21:120;;;5065:18;;;5058:30;5124:34;5104:18;;;5097:62;5176:18;;1414:68:41;4844:356:120;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:160:120:-;-1:-1:-1;;;;;118:31:120;;108:42;;98:70;;164:1;161;154:12;179:313;275:6;328:2;316:9;307:7;303:23;299:32;296:52;;;344:1;341;334:12;296:52;383:9;370:23;402:60;456:5;402:60;:::i;:::-;481:5;179:313;-1:-1:-1;;;179:313:120:o;705:483::-;810:6;818;871:2;859:9;850:7;846:23;842:32;839:52;;;887:1;884;877:12;839:52;926:9;913:23;945:60;999:5;945:60;:::i;:::-;1024:5;-1:-1:-1;1081:2:120;1066:18;;1053:32;1094:62;1053:32;1094:62;:::i;:::-;1175:7;1165:17;;;705:483;;;;;:::o;1193:127::-;1254:10;1249:3;1245:20;1242:1;1235:31;1285:4;1282:1;1275:15;1309:4;1306:1;1299:15;1325:1292;1448:6;1456;1464;1517:2;1505:9;1496:7;1492:23;1488:32;1485:52;;;1533:1;1530;1523:12;1485:52;1572:9;1559:23;1591:60;1645:5;1591:60;:::i;:::-;1670:5;-1:-1:-1;1727:2:120;1712:18;;1699:32;1740:62;1699:32;1740:62;:::i;:::-;1821:7;-1:-1:-1;1879:2:120;1864:18;;1851:32;1902:18;1932:14;;;1929:34;;;1959:1;1956;1949:12;1929:34;1997:6;1986:9;1982:22;1972:32;;2042:7;2035:4;2031:2;2027:13;2023:27;2013:55;;2064:1;2061;2054:12;2013:55;2100:2;2087:16;2122:2;2118;2115:10;2112:36;;;2128:18;;:::i;:::-;2203:2;2197:9;2171:2;2257:13;;-1:-1:-1;;2253:22:120;;;2277:2;2249:31;2245:40;2233:53;;;2301:18;;;2321:22;;;2298:46;2295:72;;;2347:18;;:::i;:::-;2387:10;2383:2;2376:22;2422:2;2414:6;2407:18;2462:7;2457:2;2452;2448;2444:11;2440:20;2437:33;2434:53;;;2483:1;2480;2473:12;2434:53;2539:2;2534;2530;2526:11;2521:2;2513:6;2509:15;2496:46;2584:1;2579:2;2574;2566:6;2562:15;2558:24;2551:35;2605:6;2595:16;;;;;;;1325:1292;;;;;:::o;3175:288::-;3253:6;3306:2;3294:9;3285:7;3281:23;3277:32;3274:52;;;3322:1;3319;3312:12;3274:52;3354:9;3348:16;3373:60;3427:5;3373:60;:::i;3468:692::-;3672:1;3668;3663:3;3659:11;3655:19;3647:6;3643:32;3632:9;3625:51;3606:4;3695:2;3733;3728;3717:9;3713:18;3706:30;3765:6;3759:13;3808:6;3803:2;3792:9;3788:18;3781:34;3833:1;3843:140;3857:6;3854:1;3851:13;3843:140;;;3952:14;;;3948:23;;3942:30;3918:17;;;3937:2;3914:26;3907:66;3872:10;;3843:140;;;4001:6;3998:1;3995:13;3992:91;;;4071:1;4066:2;4057:6;4046:9;4042:22;4038:31;4031:42;3992:91;-1:-1:-1;4144:2:120;4123:15;-1:-1:-1;;4119:29:120;4104:45;;;;4151:2;4100:54;;3468:692;-1:-1:-1;;;;3468:692:120:o","linkReferences":{}},"methodIdentifiers":{"changeProxyAdmin(address,address)":"7eff275e","getProxyAdmin(address)":"f3b7dead","getProxyImplementation(address)":"204e1c7a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgrade(address,address)":"99a88ec4","upgradeAndCall(address,address,bytes)":"9623609d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\",\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"details\":\"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`.\"},\"getProxyAdmin(address)\":{\"details\":\"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"getProxyImplementation(address)\":{\"details\":\"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgrade(address,address)\":{\"details\":\"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeProxyAdmin"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"stateMutability":"view","type":"function","name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"stateMutability":"view","type":"function","name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgrade"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeAndCall"}],"devdoc":{"kind":"dev","methods":{"changeProxyAdmin(address,address)":{"details":"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`."},"getProxyAdmin(address)":{"details":"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"getProxyImplementation(address)":{"details":"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgrade(address,address)":{"details":"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`."},"upgradeAndCall(address,address,bytes)":{"details":"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":"ProxyAdmin"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"}},"version":1},"id":48} \ No newline at end of file diff --git a/out/RateLimiter.sol/RateLimiter.json b/out/RateLimiter.sol/RateLimiter.json new file mode 100644 index 00000000..217f1c45 --- /dev/null +++ b/out/RateLimiter.sol/RateLimiter.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"bypassRateLimit","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"checkIfLimitExceeds","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenID","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"disableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"evaluateRateLimit","inputs":[{"name":"tokenID","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRateLimitParams","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct RateLimitParams","components":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTxBatchAtPtr","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startBlockNumber","type":"uint256","internalType":"uint256"},{"name":"endBlockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTxHistory","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct TxHistory","components":[{"name":"total","type":"uint256","internalType":"uint256"},{"name":"ptr","type":"uint256","internalType":"uint256"},{"name":"txBatches","type":"tuple[]","internalType":"struct TxBatch[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startBlockNumber","type":"uint256","internalType":"uint256"},{"name":"endBlockNumber","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"isRateLimiterEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPriceAggregator"}],"stateMutability":"view"},{"type":"function","name":"rateLimitParams","inputs":[],"outputs":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"removeRateLimitBypass","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"_priceOracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRateLimitBypass","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRateLimitParams","inputs":[{"name":"params","type":"tuple","internalType":"struct RateLimitParams","components":[{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txHistory","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"},{"name":"ptr","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RateLimitExceeded","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"string","indexed":false,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RateLimitParamsUpdated","inputs":[{"name":"maxAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"duration","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"batchSize","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidBatchSize","inputs":[{"name":"provided","type":"uint64","internalType":"uint64"},{"name":"minimum","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"InvalidDuration","inputs":[{"name":"provided","type":"uint256","internalType":"uint256"},{"name":"minimum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidMaxAmount","inputs":[{"name":"provided","type":"uint256","internalType":"uint256"},{"name":"minimum","type":"uint256","internalType":"uint256"},{"name":"maximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PredicateClient_IsRateLimited","inputs":[]},{"type":"error","name":"RateLimiter_InvalidToken","inputs":[]},{"type":"error","name":"TokenNotSupported","inputs":[{"name":"token","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6115628061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637012b1d4116100ad578063c47f1ac311610071578063c47f1ac3146102f5578063c60c0646146102fd578063daf42d6c14610310578063ed5f43b714610323578063f2fde38b1461034657600080fd5b80637012b1d414610281578063715018a6146102a15780638da5cb5b146102a9578063a8ca8964146102ba578063b74437a5146102ed57600080fd5b80632cc5b108116100f45780632cc5b108146101d55780632e6c02e3146101ff5780632f53036e1461023e578063530e784f1461025b5780635e89c3f41461026e57600080fd5b80630a6d4d5814610126578063112f6a31146101675780632630c12f14610195578063286df6b7146101c0575b600080fd5b61014d6101343660046110f5565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152015b60405180910390f35b61017a6101753660046110f5565b610359565b6040805193845260208401929092529082015260600161015e565b6007546101a8906001600160a01b031681565b6040516001600160a01b03909116815260200161015e565b6101d36101ce3660046110f5565b61044d565b005b6101e86101e3366004611158565b610479565b60408051921515835260208301919091520161015e565b60045460055460065461021a9291906001600160401b031683565b6040805193845260208401929092526001600160401b03169082015260600161015e565b60035461024b9060ff1681565b604051901515815260200161015e565b6101d36102693660046110f5565b610579565b61024b61027c3660046111b1565b6105a3565b61029461028f3660046110f5565b610781565b60405161015e91906111fc565b6101d3610855565b6000546001600160a01b03166101a8565b6102c2610869565b604080518251815260208084015190820152918101516001600160401b03169082015260600161015e565b6101d36108c4565b6101d36108d8565b6101d361030b3660046110f5565b6108ef565b6101d361031e366004611279565b610918565b61024b6103313660046110f5565b60026020526000908152604090205460ff1681565b6101d36103543660046110f5565b610a7f565b6001600160a01b0381166000908152600160208181526040808420815160608101835281548152938101548484015260028101805483518186028101860185528181528796879687969195949186019390879084015b828210156103ff57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906103af565b505050508152505090506000816040015182602001518151811061042557610425611291565b6020026020010151905080600001518160200151826040015194509450945050509193909250565b610455610af8565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080806104a261048c600660126112bd565b61049790600a6113b8565b8590620f4240610b52565b600754604051630bbceb3360e21b815291925060009161052f916001600160a01b031690632ef3accc906104de908b908b908b906004016113ed565b602060405180830381865afa1580156104fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051f9190611411565b8390670de0b6b3a7640000610b52565b9050600061055a610542600660126112bd565b61054d90600a6113b8565b60045490620f4240610b52565b90506105698989898585610b70565b9450945050505094509492505050565b610581610af8565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806105cb6105b5600660126112bd565b6105c090600a6113b8565b8490620f4240610b52565b600754604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90610605908990899089906004016113ed565b602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190611411565b600754604051630bbceb3360e21b81529192506000916106d3916001600160a01b031690632ef3accc90610682908b908b908b906004016113ed565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c39190611411565b8490670de0b6b3a7640000610b52565b905060006106e6610542600660126112bd565b905060006106f7338a8a8686610b70565b509050801561074f5760045460405133917fe2274a8e4f5712295a052754df3513686fd79e6fe1e6dbdd609b8b0b1fbc133c91610739918d918d918d9161142a565b60405180910390a260009550505050505061077a565b600061075a43610c53565b905061076581610c7a565b61076f4385610d26565b600196505050505050505b9392505050565b6107a560405180606001604052806000815260200160008152602001606081525090565b6001600160a01b03821660009081526001602081815260408084208151606081018352815481529381015484840152600281018054835181860281018601855281815295969295938701949192909184015b8282101561084757838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906107f7565b505050915250909392505050565b61085d610af8565b6108676000610d5e565b565b6108966040518060600160405280600081526020016000815260200160006001600160401b031681525090565b5060408051606081018252600454815260055460208201526006546001600160401b03169181019190915290565b6108cc610af8565b6003805460ff19169055565b6108e0610af8565b6003805460ff19166001179055565b6108f7610af8565b6001600160a01b03166000908152600260205260409020805460ff19169055565b610920610af8565b620f424081351080610937575064e8d4a510008135115b1561097157604051638b39eb3360e01b815281356004820152620f4240602482015264e8d4a5100060448201526064015b60405180910390fd5b6001816020013510156109a45760405163387a058b60e01b81526020820135600482015260016024820152604401610968565b60016109b66060830160408401611466565b6001600160401b03161015610a01576109d56060820160408301611466565b604051630161019760e01b81526001600160401b03909116600482015260016024820152604401610968565b806004610a0e8282611483565b50506003805460ff191660011790557fdf1f77551f6fd65be59ba5210e34eba28a083b1e076a140cd029c3b0794d574f81356020830135610a556060850160408601611466565b6040805193845260208401929092526001600160401b03169082015260600160405180910390a150565b610a87610af8565b6001600160a01b038116610aec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610968565b610af581610d5e565b50565b6000546001600160a01b031633146108675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610968565b6000826000190484118302158202610b6957600080fd5b5091020490565b60075460405163034d94bb60e21b815260009182916001600160a01b0390911690630d3652ec90610ba790899089906004016114c3565b602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be891906114d7565b610c0957858560405163c16fc3ad60e01b81526004016109689291906114c3565b6000610c1443610c53565b90506000610c228983610dae565b90506000610c328a838989610efb565b90506000610c428b848a8a610f64565b9b919a509098505050505050505050565b6005546000908210610c7157600554610c6c90836112bd565b610c74565b60005b92915050565b3360009081526001602081905260409091208054918101549091905b600283015481108015610ccf575083836002018281548110610cba57610cba611291565b90600052602060002090600302016002015411155b15610d1a57826002018181548110610ce957610ce9611291565b90600052602060002090600302016000015482610d0691906112bd565b915080610d12816114f9565b915050610c96565b90825560019091015550565b336000908152600160205260409020610d3f8184610f9d565b15610d5357610d4e8183610feb565b505050565b610d4e818484611052565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600090815260016020818152604080842081516060810183528154815293810154848401526002810180548351818602810186018552818152879695939486019390929190879084015b82821015610e525783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610e02565b50505091525050604081015151909150610e70576000915050610c74565b805160208201515b82604001515181108015610eac57508483604001518281518110610e9e57610e9e611291565b602002602001015160400151105b15610ef25782604001518181518110610ec757610ec7611291565b60200260200101516000015182610ede91906112bd565b915080610eea816114f9565b915050610e78565b50949350505050565b6001600160a01b03841660009081526002602052604081205460ff1615610f23575080610f5c565b81610f2e8486611514565b11610f4f5782610f3e85846112bd565b610f4891906112bd565b9050610f5c565b610f5984836112bd565b90505b949350505050565b6001600160a01b03841660009081526002602052604081205460ff16158015610f59575081610f938486611514565b1195945050505050565b60028201546000901580159061077a5750600283018054610fc0906001906112bd565b81548110610fd057610fd0611291565b90600052602060002090600302016002015482109392505050565b600282018054829190611000906001906112bd565b8154811061101057611010611291565b906000526020600020906003020160000160008282546110309190611514565b9091555050815481908390600090611049908490611514565b90915550505050565b6040805160608101825282815260208101849052600654600092820190611082906001600160401b031686611514565b90526002808601805460018181018355600092835260208084208651600390940201928355850151908201556040840151920191909155855491925083918691906110ce908490611514565b909155505050505050565b80356001600160a01b03811681146110f057600080fd5b919050565b60006020828403121561110757600080fd5b61077a826110d9565b60008083601f84011261112257600080fd5b5081356001600160401b0381111561113957600080fd5b60208301915083602082850101111561115157600080fd5b9250929050565b6000806000806060858703121561116e57600080fd5b611177856110d9565b935060208501356001600160401b0381111561119257600080fd5b61119e87828801611110565b9598909750949560400135949350505050565b6000806000604084860312156111c657600080fd5b83356001600160401b038111156111dc57600080fd5b6111e886828701611110565b909790965060209590950135949350505050565b600060208083526080830184518285015281850151604081818701528087015191506060808188015283835180865260a0890191508685019550600094505b8085101561126c5785518051835287810151888401528401518483015294860194600194909401939082019061123b565b5098975050505050505050565b60006060828403121561128b57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156112cf576112cf6112a7565b500390565b600181815b8085111561130f5781600019048211156112f5576112f56112a7565b8085161561130257918102915b93841c93908002906112d9565b509250929050565b60008261132657506001610c74565b8161133357506000610c74565b816001811461134957600281146113535761136f565b6001915050610c74565b60ff841115611364576113646112a7565b50506001821b610c74565b5060208310610133831016604e8410600b8410161715611392575081810a610c74565b61139c83836112d4565b80600019048211156113b0576113b06112a7565b029392505050565b600061077a8383611317565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006114016040830185876113c4565b9050826020830152949350505050565b60006020828403121561142357600080fd5b5051919050565b60608152600061143e6060830186886113c4565b6020830194909452506040015292915050565b6001600160401b0381168114610af557600080fd5b60006020828403121561147857600080fd5b813561077a81611451565b81358155602082013560018201556002810160408301356114a381611451565b815467ffffffffffffffff19166001600160401b03919091161790555050565b602081526000610f5c6020830184866113c4565b6000602082840312156114e957600080fd5b8151801515811461077a57600080fd5b600060001982141561150d5761150d6112a7565b5060010190565b60008219821115611527576115276112a7565b50019056fea2646970667358221220f6bc29b1eaf024d6a92c84075e947401902d8bcef5c1efeaee15eeb82dce7e4e64736f6c634300080c0033","sourceMap":"915:11009:80:-:0;;;;;;;;;;;;-1:-1:-1;936:32:41;719:10:52;936:18:41;:32::i;:::-;915:11009:80;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;915:11009:80:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637012b1d4116100ad578063c47f1ac311610071578063c47f1ac3146102f5578063c60c0646146102fd578063daf42d6c14610310578063ed5f43b714610323578063f2fde38b1461034657600080fd5b80637012b1d414610281578063715018a6146102a15780638da5cb5b146102a9578063a8ca8964146102ba578063b74437a5146102ed57600080fd5b80632cc5b108116100f45780632cc5b108146101d55780632e6c02e3146101ff5780632f53036e1461023e578063530e784f1461025b5780635e89c3f41461026e57600080fd5b80630a6d4d5814610126578063112f6a31146101675780632630c12f14610195578063286df6b7146101c0575b600080fd5b61014d6101343660046110f5565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152015b60405180910390f35b61017a6101753660046110f5565b610359565b6040805193845260208401929092529082015260600161015e565b6007546101a8906001600160a01b031681565b6040516001600160a01b03909116815260200161015e565b6101d36101ce3660046110f5565b61044d565b005b6101e86101e3366004611158565b610479565b60408051921515835260208301919091520161015e565b60045460055460065461021a9291906001600160401b031683565b6040805193845260208401929092526001600160401b03169082015260600161015e565b60035461024b9060ff1681565b604051901515815260200161015e565b6101d36102693660046110f5565b610579565b61024b61027c3660046111b1565b6105a3565b61029461028f3660046110f5565b610781565b60405161015e91906111fc565b6101d3610855565b6000546001600160a01b03166101a8565b6102c2610869565b604080518251815260208084015190820152918101516001600160401b03169082015260600161015e565b6101d36108c4565b6101d36108d8565b6101d361030b3660046110f5565b6108ef565b6101d361031e366004611279565b610918565b61024b6103313660046110f5565b60026020526000908152604090205460ff1681565b6101d36103543660046110f5565b610a7f565b6001600160a01b0381166000908152600160208181526040808420815160608101835281548152938101548484015260028101805483518186028101860185528181528796879687969195949186019390879084015b828210156103ff57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906103af565b505050508152505090506000816040015182602001518151811061042557610425611291565b6020026020010151905080600001518160200151826040015194509450945050509193909250565b610455610af8565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080806104a261048c600660126112bd565b61049790600a6113b8565b8590620f4240610b52565b600754604051630bbceb3360e21b815291925060009161052f916001600160a01b031690632ef3accc906104de908b908b908b906004016113ed565b602060405180830381865afa1580156104fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051f9190611411565b8390670de0b6b3a7640000610b52565b9050600061055a610542600660126112bd565b61054d90600a6113b8565b60045490620f4240610b52565b90506105698989898585610b70565b9450945050505094509492505050565b610581610af8565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806105cb6105b5600660126112bd565b6105c090600a6113b8565b8490620f4240610b52565b600754604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90610605908990899089906004016113ed565b602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190611411565b600754604051630bbceb3360e21b81529192506000916106d3916001600160a01b031690632ef3accc90610682908b908b908b906004016113ed565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c39190611411565b8490670de0b6b3a7640000610b52565b905060006106e6610542600660126112bd565b905060006106f7338a8a8686610b70565b509050801561074f5760045460405133917fe2274a8e4f5712295a052754df3513686fd79e6fe1e6dbdd609b8b0b1fbc133c91610739918d918d918d9161142a565b60405180910390a260009550505050505061077a565b600061075a43610c53565b905061076581610c7a565b61076f4385610d26565b600196505050505050505b9392505050565b6107a560405180606001604052806000815260200160008152602001606081525090565b6001600160a01b03821660009081526001602081815260408084208151606081018352815481529381015484840152600281018054835181860281018601855281815295969295938701949192909184015b8282101561084757838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906107f7565b505050915250909392505050565b61085d610af8565b6108676000610d5e565b565b6108966040518060600160405280600081526020016000815260200160006001600160401b031681525090565b5060408051606081018252600454815260055460208201526006546001600160401b03169181019190915290565b6108cc610af8565b6003805460ff19169055565b6108e0610af8565b6003805460ff19166001179055565b6108f7610af8565b6001600160a01b03166000908152600260205260409020805460ff19169055565b610920610af8565b620f424081351080610937575064e8d4a510008135115b1561097157604051638b39eb3360e01b815281356004820152620f4240602482015264e8d4a5100060448201526064015b60405180910390fd5b6001816020013510156109a45760405163387a058b60e01b81526020820135600482015260016024820152604401610968565b60016109b66060830160408401611466565b6001600160401b03161015610a01576109d56060820160408301611466565b604051630161019760e01b81526001600160401b03909116600482015260016024820152604401610968565b806004610a0e8282611483565b50506003805460ff191660011790557fdf1f77551f6fd65be59ba5210e34eba28a083b1e076a140cd029c3b0794d574f81356020830135610a556060850160408601611466565b6040805193845260208401929092526001600160401b03169082015260600160405180910390a150565b610a87610af8565b6001600160a01b038116610aec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610968565b610af581610d5e565b50565b6000546001600160a01b031633146108675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610968565b6000826000190484118302158202610b6957600080fd5b5091020490565b60075460405163034d94bb60e21b815260009182916001600160a01b0390911690630d3652ec90610ba790899089906004016114c3565b602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be891906114d7565b610c0957858560405163c16fc3ad60e01b81526004016109689291906114c3565b6000610c1443610c53565b90506000610c228983610dae565b90506000610c328a838989610efb565b90506000610c428b848a8a610f64565b9b919a509098505050505050505050565b6005546000908210610c7157600554610c6c90836112bd565b610c74565b60005b92915050565b3360009081526001602081905260409091208054918101549091905b600283015481108015610ccf575083836002018281548110610cba57610cba611291565b90600052602060002090600302016002015411155b15610d1a57826002018181548110610ce957610ce9611291565b90600052602060002090600302016000015482610d0691906112bd565b915080610d12816114f9565b915050610c96565b90825560019091015550565b336000908152600160205260409020610d3f8184610f9d565b15610d5357610d4e8183610feb565b505050565b610d4e818484611052565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600090815260016020818152604080842081516060810183528154815293810154848401526002810180548351818602810186018552818152879695939486019390929190879084015b82821015610e525783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610e02565b50505091525050604081015151909150610e70576000915050610c74565b805160208201515b82604001515181108015610eac57508483604001518281518110610e9e57610e9e611291565b602002602001015160400151105b15610ef25782604001518181518110610ec757610ec7611291565b60200260200101516000015182610ede91906112bd565b915080610eea816114f9565b915050610e78565b50949350505050565b6001600160a01b03841660009081526002602052604081205460ff1615610f23575080610f5c565b81610f2e8486611514565b11610f4f5782610f3e85846112bd565b610f4891906112bd565b9050610f5c565b610f5984836112bd565b90505b949350505050565b6001600160a01b03841660009081526002602052604081205460ff16158015610f59575081610f938486611514565b1195945050505050565b60028201546000901580159061077a5750600283018054610fc0906001906112bd565b81548110610fd057610fd0611291565b90600052602060002090600302016002015482109392505050565b600282018054829190611000906001906112bd565b8154811061101057611010611291565b906000526020600020906003020160000160008282546110309190611514565b9091555050815481908390600090611049908490611514565b90915550505050565b6040805160608101825282815260208101849052600654600092820190611082906001600160401b031686611514565b90526002808601805460018181018355600092835260208084208651600390940201928355850151908201556040840151920191909155855491925083918691906110ce908490611514565b909155505050505050565b80356001600160a01b03811681146110f057600080fd5b919050565b60006020828403121561110757600080fd5b61077a826110d9565b60008083601f84011261112257600080fd5b5081356001600160401b0381111561113957600080fd5b60208301915083602082850101111561115157600080fd5b9250929050565b6000806000806060858703121561116e57600080fd5b611177856110d9565b935060208501356001600160401b0381111561119257600080fd5b61119e87828801611110565b9598909750949560400135949350505050565b6000806000604084860312156111c657600080fd5b83356001600160401b038111156111dc57600080fd5b6111e886828701611110565b909790965060209590950135949350505050565b600060208083526080830184518285015281850151604081818701528087015191506060808188015283835180865260a0890191508685019550600094505b8085101561126c5785518051835287810151888401528401518483015294860194600194909401939082019061123b565b5098975050505050505050565b60006060828403121561128b57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156112cf576112cf6112a7565b500390565b600181815b8085111561130f5781600019048211156112f5576112f56112a7565b8085161561130257918102915b93841c93908002906112d9565b509250929050565b60008261132657506001610c74565b8161133357506000610c74565b816001811461134957600281146113535761136f565b6001915050610c74565b60ff841115611364576113646112a7565b50506001821b610c74565b5060208310610133831016604e8410600b8410161715611392575081810a610c74565b61139c83836112d4565b80600019048211156113b0576113b06112a7565b029392505050565b600061077a8383611317565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006114016040830185876113c4565b9050826020830152949350505050565b60006020828403121561142357600080fd5b5051919050565b60608152600061143e6060830186886113c4565b6020830194909452506040015292915050565b6001600160401b0381168114610af557600080fd5b60006020828403121561147857600080fd5b813561077a81611451565b81358155602082013560018201556002810160408301356114a381611451565b815467ffffffffffffffff19166001600160401b03919091161790555050565b602081526000610f5c6020830184866113c4565b6000602082840312156114e957600080fd5b8151801515811461077a57600080fd5b600060001982141561150d5761150d6112a7565b5060010190565b60008219821115611527576115276112a7565b50019056fea2646970667358221220f6bc29b1eaf024d6a92c84075e947401902d8bcef5c1efeaee15eeb82dce7e4e64736f6c634300080c0033","sourceMap":"915:11009:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;557:25:120;;;613:2;598:18;;591:34;;;;530:18;1966:46:80;;;;;;;;10699:341;;;;;;:::i;:::-;;:::i;:::-;;;;838:25:120;;;894:2;879:18;;872:34;;;;922:18;;;915:34;826:2;811:18;10699:341:80;636:319:120;2155:35:80;;;;;-1:-1:-1;;;;;2155:35:80;;;;;;-1:-1:-1;;;;;1150:32:120;;;1132:51;;1120:2;1105:18;2155:35:80;960:229:120;4059:120:80;;;;;;:::i;:::-;;:::i;:::-;;7693:522;;;;;;:::i;:::-;;:::i;:::-;;;;2298:14:120;;2291:22;2273:41;;2345:2;2330:18;;2323:34;;;;2246:18;7693:522:80;2105:258:120;2111:38:80;;;;;;;;;;;-1:-1:-1;;;;;2111:38:80;;;;;;;2568:25:120;;;2624:2;2609:18;;2602:34;;;;-1:-1:-1;;;;;2672:31:120;2652:18;;;2645:59;2556:2;2541:18;2111:38:80;2368:342:120;2072:32:80;;;;;;;;;;;;2880:14:120;;2873:22;2855:41;;2843:2;2828:18;2072:32:80;2715:187:120;4657:140:80;;;;;;:::i;:::-;;:::i;5577:902::-;;;;;;:::i;:::-;;:::i;2763:130::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1831:101:41:-;;;:::i;1201:85::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;2397:116:80;;;:::i;:::-;;;;4890:13:120;;4872:32;;4960:4;4948:17;;;4942:24;4920:20;;;4913:54;5015:17;;;5009:24;-1:-1:-1;;;;;5005:49:120;4983:20;;;4976:79;4860:2;4845:18;2397:116:80;4658:403:120;5114:94:80;;;:::i;4909:92::-;;;:::i;4343:124::-;;;;;;:::i;:::-;;:::i;3144:710::-;;;;;;:::i;:::-;;:::i;2018:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2081:198:41;;;;;;:::i;:::-;;:::i;10699:341:80:-;-1:-1:-1;;;;;10878:15:80;;10775:14;10878:15;;;:9;:15;;;;;;;;10851:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10775:14;;;;;;10851:42;;10878:15;10851:42;;;;;10775:14;;10851:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10903:20;10926:7;:17;;;10944:7;:11;;;10926:30;;;;;;;;:::i;:::-;;;;;;;10903:53;;10974:5;:12;;;10988:5;:22;;;11012:5;:20;;;10966:67;;;;;;;;10699:341;;;;;:::o;4059:120::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;;;4144:21:80::1;;::::0;;;:15:::1;:21;::::0;;;;:28;;-1:-1:-1;;4144:28:80::1;4168:4;4144:28;::::0;;4059:120::o;7693:522::-;7832:4;;;7880:49;1744:28;1688:1;1639:2;1744:28;:::i;:::-;1737:36;;:2;:36;:::i;:::-;7880:6;;1590:3;7880:17;:49::i;:::-;7982:11;;:37;;-1:-1:-1;;;7982:37:80;;7857:72;;-1:-1:-1;7939:16:80;;7958:77;;-1:-1:-1;;;;;7982:11:80;;:20;;:37;;8003:7;;;;8012:6;;7982:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7958:12;;1538:4;7958:23;:77::i;:::-;7939:96;-1:-1:-1;8045:17:80;8065:68;1744:28;1688:1;1639:2;1744:28;:::i;:::-;1737:36;;:2;:36;:::i;:::-;8065:15;:25;;1590:3;8065:36;:68::i;:::-;8045:88;;8150:58;8171:6;8179:7;;8188:8;8198:9;8150:20;:58::i;:::-;8143:65;;;;;;;7693:522;;;;;;;:::o;4657:140::-;1094:13:41;:11;:13::i;:::-;4746:11:80::1;:44:::0;;-1:-1:-1;;;;;;4746:44:80::1;-1:-1:-1::0;;;;;4746:44:80;;;::::1;::::0;;;::::1;::::0;;4657:140::o;5577:902::-;5663:4;;5702:49;1744:28;1688:1;1639:2;1744:28;:::i;:::-;1737:36;;:2;:36;:::i;:::-;5702:6;;1590:3;5702:17;:49::i;:::-;5777:11;;:37;;-1:-1:-1;;;5777:37:80;;5679:72;;-1:-1:-1;5761:13:80;;-1:-1:-1;;;;;5777:11:80;;;;:20;;:37;;5798:7;;;;5807:6;;5777:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5867:11;;:37;;-1:-1:-1;;;5867:37:80;;5761:53;;-1:-1:-1;5824:16:80;;5843:77;;-1:-1:-1;;;;;5867:11:80;;:20;;:37;;5888:7;;;;5897:6;;5867:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5843:12;;1538:4;5843:23;:77::i;:::-;5824:96;-1:-1:-1;5930:17:80;5950:68;1744:28;1688:1;1639:2;1744:28;:::i;5950:68::-;5930:88;;6029:18;6052:62;6073:10;6085:7;;6094:8;6104:9;6052:20;:62::i;:::-;6028:86;;;6128:13;6124:148;;;6209:15;:25;6162:73;;6180:10;;6162:73;;;;6192:7;;;;6201:6;;6162:73;:::i;:::-;;;;;;;;6256:5;6249:12;;;;;;;;;6124:148;6281:27;6311:37;6335:12;6311:23;:37::i;:::-;6281:67;;6358:43;6381:19;6358:22;:43::i;:::-;6411:40;6428:12;6442:8;6411:16;:40::i;:::-;6468:4;6461:11;;;;;;;;5577:902;;;;;;:::o;2763:130::-;2836:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;2836:16:80;-1:-1:-1;;;;;2871:15:80;;;;;;:9;:15;;;;;;;;2864:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2871:15;;2864:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2864:22:80;;-1:-1:-1;2864:22:80;;2763:130;-1:-1:-1;;;2763:130:80:o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;2397:116:80:-;2450:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2450:22:80;-1:-1:-1;2484:22:80;;;;;;;;2491:15;2484:22;;;;;;;;;;;-1:-1:-1;;;;;2484:22:80;;;;;;;;;2397:116::o;5114:94::-;1094:13:41;:11;:13::i;:::-;5173:20:80::1;:28:::0;;-1:-1:-1;;5173:28:80::1;::::0;;5114:94::o;4909:92::-;1094:13:41;:11;:13::i;:::-;4967:20:80::1;:27:::0;;-1:-1:-1;;4967:27:80::1;4990:4;4967:27;::::0;;4909:92::o;4343:124::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;;;4431:21:80::1;4455:5;4431:21:::0;;;:15:::1;:21;::::0;;;;:29;;-1:-1:-1;;4431:29:80::1;::::0;;4343:124::o;3144:710::-;1094:13:41;:11;:13::i;:::-;1339:3:80::1;3252:16:::0;::::1;:35;::::0;:74:::1;;-1:-1:-1::0;1392:4:80::1;3291:16:::0;::::1;:35;3252:74;3248:182;;;3349:70;::::0;-1:-1:-1;;;3349:70:80;;3366:16;::::1;3349:70;::::0;::::1;838:25:120::0;1339:3:80::1;879:18:120::0;;;872:34;1392:4:80::1;922:18:120::0;;;915:34;811:18;;3349:70:80::1;;;;;;;;3248:182;1442:1;3444:6;:15;;;:30;3440:114;;;3497:46;::::0;-1:-1:-1;;;3497:46:80;;3513:15:::1;::::0;::::1;;3497:46;::::0;::::1;557:25:120::0;1442:1:80::1;598:18:120::0;;;591:34;530:18;;3497:46:80::1;383:248:120::0;3440:114:80::1;1490:1;3568:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;3568:33:80::1;;3564:121;;;3641:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;3624:50;::::0;-1:-1:-1;;;3624:50:80;;-1:-1:-1;;;;;8828:15:120;;;3624:50:80::1;::::0;::::1;8810:34:120::0;1490:1:80::1;8860:18:120::0;;;8853:43;8746:18;;3624:50:80::1;8603:299:120::0;3564:121:80::1;3713:6:::0;3695:15:::1;:24;3713:6:::0;3695:15;:24:::1;:::i;:::-;-1:-1:-1::0;;3729:20:80::1;:27:::0;;-1:-1:-1;;3729:27:80::1;3752:4;3729:27;::::0;;3772:75:::1;3795:16:::0;::::1;3813:15;::::0;::::1;;3830:16;::::0;;;::::1;::::0;::::1;;:::i;:::-;3772:75;::::0;;2568:25:120;;;2624:2;2609:18;;2602:34;;;;-1:-1:-1;;;;;2672:31:120;2652:18;;;2645:59;2556:2;2541:18;3772:75:80::1;;;;;;;3144:710:::0;:::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;9613:2:120;2161:73:41::1;::::0;::::1;9595:21:120::0;9652:2;9632:18;;;9625:30;9691:34;9671:18;;;9664:62;-1:-1:-1;;;9742:18:120;;;9735:36;9788:19;;2161:73:41::1;9411:402:120::0;2161:73:41::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:52;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;10020:2:120;1414:68:41;;;10002:21:120;;;10039:18;;;10032:30;10098:34;10078:18;;;10071:62;10150:18;;1414:68:41;9818:356:120;1564:526:56;1680:9;1928:1;-1:-1:-1;;1911:19:56;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:56;;2047:27;;1564:526::o;6974:713:80:-;7171:11;;:35;;-1:-1:-1;;;7171:35:80;;7141:4;;;;-1:-1:-1;;;;;7171:11:80;;;;:28;;:35;;7200:5;;;;7171:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7166:98;;7247:5;;7229:24;;-1:-1:-1;;;7229:24:80;;;;;;;;;:::i;7166:98::-;7273:27;7303:37;7327:12;7303:23;:37::i;:::-;7273:67;;7350:26;7379:51;7402:6;7410:19;7379:22;:51::i;:::-;7350:80;;7440:26;7469:71;7492:6;7500:18;7520:8;7530:9;7469:22;:71::i;:::-;7440:100;;7550:13;7566:66;7584:6;7592:18;7612:8;7622:9;7566:17;:66::i;:::-;7550:82;7661:18;;-1:-1:-1;6974:713:80;;-1:-1:-1;;;;;;;;;6974:713:80:o;11046:206::-;11176:24;;11136:7;;11162:38;;:83;;11221:24;;11207:38;;:11;:38;:::i;:::-;11162:83;;;11203:1;11162:83;11155:90;11046:206;-1:-1:-1;;11046:206:80:o;9323:476::-;9455:10;9417:25;9445:21;;;:9;:21;;;;;;;;9492:13;;9529:11;;;;9445:21;;9492:13;9550:185;9563:17;;;:24;9557:30;;:94;;;;;9632:19;9591:7;:17;;9609:3;9591:22;;;;;;;;:::i;:::-;;;;;;;;;;;:37;;;:60;;9557:94;9550:185;;;9676:7;:17;;9694:3;9676:22;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;;9667:38;;;;;:::i;:::-;;-1:-1:-1;9719:5:80;;;;:::i;:::-;;;;9550:185;;;9744:21;;;9775:11;;;;:17;-1:-1:-1;9323:476:80:o;8221:339::-;8341:10;8303:25;8331:21;;;:9;:21;;;;;8366:48;8331:21;8402:11;8366:26;:48::i;:::-;8362:192;;;8430:37;8451:7;8460:6;8430:20;:37::i;:::-;8293:267;8221:339;;:::o;8362:192::-;8498:45;8514:7;8523:11;8536:6;8498:15;:45::i;2433:187:41:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;9805:538:80:-;-1:-1:-1;;;;;9951:17:80;;9905:7;9951:17;;;:9;:17;;;;;;;;9924:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9905:7;;9924:44;9951:17;;9924:44;;;;;;;9905:7;;9924:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9924:44:80;;-1:-1:-1;;9983:17:80;;;;:24;9924:44;;-1:-1:-1;9979:68:80;;10035:1;10028:8;;;;;9979:68;10073:13;;10110:11;;;;10131:184;10144:7;:17;;;:24;10138:3;:30;:93;;;;;10212:19;10172:7;:17;;;10190:3;10172:22;;;;;;;;:::i;:::-;;;;;;;:37;;;:59;10138:93;10131:184;;;10256:7;:17;;;10274:3;10256:22;;;;;;;;:::i;:::-;;;;;;;:29;;;10247:38;;;;;:::i;:::-;;-1:-1:-1;10299:5:80;;;;:::i;:::-;;;;10131:184;;;-1:-1:-1;10331:5:80;9805:538;-1:-1:-1;;;;9805:538:80:o;11532:390::-;-1:-1:-1;;;;;11714:23:80;;11691:7;11714:23;;;:15;:23;;;;;;;;11710:70;;;-1:-1:-1;11760:9:80;11753:16;;11710:70;11812:9;11794:14;11802:6;11794:5;:14;:::i;:::-;:27;11790:91;;11864:6;11844:17;11856:5;11844:9;:17;:::i;:::-;:26;;;;:::i;:::-;11837:33;;;;11790:91;11898:17;11910:5;11898:9;:17;:::i;:::-;11891:24;;11532:390;;;;;;;:::o;11258:268::-;-1:-1:-1;;;;;11451:23:80;;11427:4;11451:23;;;:15;:23;;;;;;;;11450:24;:69;;;;-1:-1:-1;11510:9:80;11478:29;11499:8;11478:18;:29;:::i;:::-;:41;;11258:268;-1:-1:-1;;;;;11258:268:80:o;8566:256::-;8707:17;;;:24;8672:4;;8707:28;;;;:108;;-1:-1:-1;8753:17:80;;;8771:24;;:28;;8798:1;;8771:28;:::i;:::-;8753:47;;;;;;;;:::i;:::-;;;;;;;;;;;:62;;;8739:11;:76;8688:127;8566:256;-1:-1:-1;;;8566:256:80:o;8828:195::-;8919:17;;;8937:24;;8977:6;;8919:17;8937:28;;8964:1;;8937:28;:::i;:::-;8919:47;;;;;;;;:::i;:::-;;;;;;;;;;;:54;;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;8993:23:80;;9010:6;;8993:7;;:13;;:23;;9010:6;;8993:23;:::i;:::-;;;;-1:-1:-1;;;;8828:195:80:o;9029:288::-;9164:69;;;;;;;;;;;;;;;;;9207:25;;9136;;9164:69;;;9193:39;;-1:-1:-1;;;;;9207:25:80;9180:11;9193:39;:::i;:::-;9164:69;;9243:17;;;;:34;;;;;;;;-1:-1:-1;9243:34:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9287:23;;9136:97;;-1:-1:-1;9304:6:80;;9243:7;;-1:-1:-1;9287:23:80;;9304:6;;9287:23;:::i;:::-;;;;-1:-1:-1;;;;;;9029:288:80:o;14:173:120:-;82:20;;-1:-1:-1;;;;;131:31:120;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;1194:348::-;1246:8;1256:6;1310:3;1303:4;1295:6;1291:17;1287:27;1277:55;;1328:1;1325;1318:12;1277:55;-1:-1:-1;1351:20:120;;-1:-1:-1;;;;;1383:30:120;;1380:50;;;1426:1;1423;1416:12;1380:50;1463:4;1455:6;1451:17;1439:29;;1515:3;1508:4;1499:6;1491;1487:19;1483:30;1480:39;1477:59;;;1532:1;1529;1522:12;1477:59;1194:348;;;;;:::o;1547:553::-;1636:6;1644;1652;1660;1713:2;1701:9;1692:7;1688:23;1684:32;1681:52;;;1729:1;1726;1719:12;1681:52;1752:29;1771:9;1752:29;:::i;:::-;1742:39;;1832:2;1821:9;1817:18;1804:32;-1:-1:-1;;;;;1851:6:120;1848:30;1845:50;;;1891:1;1888;1881:12;1845:50;1930:59;1981:7;1972:6;1961:9;1957:22;1930:59;:::i;:::-;1547:553;;2008:8;;-1:-1:-1;1904:85:120;;2090:2;2075:18;2062:32;;1547:553;-1:-1:-1;;;;1547:553:120:o;2907:479::-;2987:6;2995;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;3112:9;3099:23;-1:-1:-1;;;;;3137:6:120;3134:30;3131:50;;;3177:1;3174;3167:12;3131:50;3216:59;3267:7;3258:6;3247:9;3243:22;3216:59;:::i;:::-;3294:8;;3190:85;;-1:-1:-1;3376:2:120;3361:18;;;;3348:32;;2907:479;-1:-1:-1;;;;2907:479:120:o;3391:1054::-;3539:4;3568:2;3597;3586:9;3579:21;3638:3;3627:9;3623:19;3684:6;3678:13;3673:2;3662:9;3658:18;3651:41;3729:2;3721:6;3717:15;3711:22;3752:2;3790;3785;3774:9;3770:18;3763:30;3840:2;3832:6;3828:15;3822:22;3802:42;;3863:4;3903:2;3898;3887:9;3883:18;3876:30;3926:6;3961:12;3955:19;3998:6;3990;3983:22;4036:3;4025:9;4021:19;4014:26;;4081:2;4067:12;4063:21;4049:35;;4102:1;4093:10;;4112:307;4126:6;4123:1;4120:13;4112:307;;;4185:13;;4223:9;;4211:22;;4273:11;;;4267:18;4253:12;;;4246:40;4326:11;;4320:18;4306:12;;;4299:40;4394:15;;;;4148:1;4141:9;;;;;4359:12;;;;4112:307;;;-1:-1:-1;4436:3:120;3391:1054;-1:-1:-1;;;;;;;;3391:1054:120:o;5066:202::-;5161:6;5214:2;5202:9;5193:7;5189:23;5185:32;5182:52;;;5230:1;5227;5220:12;5182:52;-1:-1:-1;5253:9:120;5066:202;-1:-1:-1;5066:202:120:o;5273:127::-;5334:10;5329:3;5325:20;5322:1;5315:31;5365:4;5362:1;5355:15;5389:4;5386:1;5379:15;5405:127;5466:10;5461:3;5457:20;5454:1;5447:31;5497:4;5494:1;5487:15;5521:4;5518:1;5511:15;5537:125;5577:4;5605:1;5602;5599:8;5596:34;;;5610:18;;:::i;:::-;-1:-1:-1;5647:9:120;;5537:125::o;5667:422::-;5756:1;5799:5;5756:1;5813:270;5834:7;5824:8;5821:21;5813:270;;;5893:4;5889:1;5885:6;5881:17;5875:4;5872:27;5869:53;;;5902:18;;:::i;:::-;5952:7;5942:8;5938:22;5935:55;;;5972:16;;;;5935:55;6051:22;;;;6011:15;;;;5813:270;;;5817:3;5667:422;;;;;:::o;6094:806::-;6143:5;6173:8;6163:80;;-1:-1:-1;6214:1:120;6228:5;;6163:80;6262:4;6252:76;;-1:-1:-1;6299:1:120;6313:5;;6252:76;6344:4;6362:1;6357:59;;;;6430:1;6425:130;;;;6337:218;;6357:59;6387:1;6378:10;;6401:5;;;6425:130;6462:3;6452:8;6449:17;6446:43;;;6469:18;;:::i;:::-;-1:-1:-1;;6525:1:120;6511:16;;6540:5;;6337:218;;6639:2;6629:8;6626:16;6620:3;6614:4;6611:13;6607:36;6601:2;6591:8;6588:16;6583:2;6577:4;6574:12;6570:35;6567:77;6564:159;;;-1:-1:-1;6676:19:120;;;6708:5;;6564:159;6755:34;6780:8;6774:4;6755:34;:::i;:::-;6825:6;6821:1;6817:6;6813:19;6804:7;6801:32;6798:58;;;6836:18;;:::i;:::-;6874:20;;6094:806;-1:-1:-1;;;6094:806:120:o;6905:131::-;6965:5;6994:36;7021:8;7015:4;6994:36;:::i;7041:267::-;7130:6;7125:3;7118:19;7182:6;7175:5;7168:4;7163:3;7159:14;7146:43;-1:-1:-1;7234:1:120;7209:16;;;7227:4;7205:27;;;7198:38;;;;7290:2;7269:15;;;-1:-1:-1;;7265:29:120;7256:39;;;7252:50;;7041:267::o;7313:318::-;7500:2;7489:9;7482:21;7463:4;7520:62;7578:2;7567:9;7563:18;7555:6;7547;7520:62;:::i;:::-;7512:70;;7618:6;7613:2;7602:9;7598:18;7591:34;7313:318;;;;;;:::o;7636:184::-;7706:6;7759:2;7747:9;7738:7;7734:23;7730:32;7727:52;;;7775:1;7772;7765:12;7727:52;-1:-1:-1;7798:16:120;;7636:184;-1:-1:-1;7636:184:120:o;7825:389::-;8040:2;8029:9;8022:21;8003:4;8060:62;8118:2;8107:9;8103:18;8095:6;8087;8060:62;:::i;:::-;8153:2;8138:18;;8131:34;;;;-1:-1:-1;8196:2:120;8181:18;8174:34;8052:70;7825:389;-1:-1:-1;;7825:389:120:o;8219:129::-;-1:-1:-1;;;;;8297:5:120;8293:30;8286:5;8283:41;8273:69;;8338:1;8335;8328:12;8353:245;8411:6;8464:2;8452:9;8443:7;8439:23;8435:32;8432:52;;;8480:1;8477;8470:12;8432:52;8519:9;8506:23;8538:30;8562:5;8538:30;:::i;8907:499::-;9088:5;9075:19;9069:4;9062:33;9149:2;9142:5;9138:14;9125:28;9121:1;9115:4;9111:12;9104:50;9191:1;9185:4;9181:12;9241:2;9234:5;9230:14;9217:28;9254:32;9278:7;9254:32;:::i;:::-;9321:17;;-1:-1:-1;;9317:47:120;-1:-1:-1;;;;;9366:32:120;;;;9314:85;9295:105;;-1:-1:-1;;8907:499:120:o;10179:247::-;10338:2;10327:9;10320:21;10301:4;10358:62;10416:2;10405:9;10401:18;10393:6;10385;10358:62;:::i;10431:277::-;10498:6;10551:2;10539:9;10530:7;10526:23;10522:32;10519:52;;;10567:1;10564;10557:12;10519:52;10599:9;10593:16;10652:5;10645:13;10638:21;10631:5;10628:32;10618:60;;10674:1;10671;10664:12;10713:135;10752:3;-1:-1:-1;;10773:17:120;;10770:43;;;10793:18;;:::i;:::-;-1:-1:-1;10840:1:120;10829:13;;10713:135::o;10853:128::-;10893:3;10924:1;10920:6;10917:1;10914:13;10911:39;;;10930:18;;:::i;:::-;-1:-1:-1;10966:9:120;;10853:128::o","linkReferences":{}},"methodIdentifiers":{"bypassRateLimit(address)":"ed5f43b7","checkIfLimitExceeds(address,string,uint256)":"2cc5b108","disableRateLimiter()":"b74437a5","enableRateLimiter()":"c47f1ac3","evaluateRateLimit(string,uint256)":"5e89c3f4","getRateLimitParams()":"a8ca8964","getTxBatchAtPtr(address)":"112f6a31","getTxHistory(address)":"7012b1d4","isRateLimiterEnabled()":"2f53036e","owner()":"8da5cb5b","priceOracle()":"2630c12f","rateLimitParams()":"2e6c02e3","removeRateLimitBypass(address)":"c60c0646","renounceOwnership()":"715018a6","setPriceOracle(address)":"530e784f","setRateLimitBypass(address)":"286df6b7","setRateLimitParams((uint256,uint256,uint64))":"daf42d6c","transferOwnership(address)":"f2fde38b","txHistory(address)":"0a6d4d58"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"provided\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minimum\",\"type\":\"uint64\"}],\"name\":\"InvalidBatchSize\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"InvalidMaxAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PredicateClient_IsRateLimited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RateLimiter_InvalidToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"}],\"name\":\"TokenNotSupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"RateLimitExceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"name\":\"RateLimitParamsUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bypassRateLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"checkIfLimitExceeds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"evaluateRateLimit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitParams\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"internalType\":\"struct RateLimitParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTxBatchAtPtr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTxHistory\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ptr\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct TxBatch[]\",\"name\":\"txBatches\",\"type\":\"tuple[]\"}],\"internalType\":\"struct TxHistory\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isRateLimiterEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"contract IPriceAggregator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateLimitParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"removeRateLimitBypass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"setRateLimitBypass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"internalType\":\"struct RateLimitParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"setRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"txHistory\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ptr\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implements a value-based rate limiting mechanism for ERC20 token transfers. This contract allows for the implementation of rate limits on token transfers based on the total value of transactions within a specified time window. It uses an external price oracle for accurate valuation of assets in a common denominator. The rate limiter can be integrated into token transfers, swaps, or any other value transfer mechanism to provide an additional layer of control over individual account inflows.\",\"kind\":\"dev\",\"methods\":{\"disableRateLimiter()\":{\"details\":\"Only callable by the contract owner.\"},\"enableRateLimiter()\":{\"details\":\"Only callable by the contract owner.\"},\"evaluateRateLimit(string,uint256)\":{\"params\":{\"amount\":\"The amount of the token being transacted.\",\"tokenID\":\"The identifier of the token being transacted.\"},\"returns\":{\"_0\":\"bool Returns true if the transaction is within the rate limit, false otherwise.\"}},\"getRateLimitParams()\":{\"returns\":{\"_0\":\"RateLimitParams struct containing the current rate limit settings.\"}},\"getTxBatchAtPtr(address)\":{\"params\":{\"user\":\"The address of the user to check.\"},\"returns\":{\"amount\":\"The total amount in the batch.\",\"endBlockNumber\":\"The ending block number of the batch.\",\"startBlockNumber\":\"The starting block number of the batch.\"}},\"getTxHistory(address)\":{\"params\":{\"user\":\"The address of the user whose transaction history is requested.\"},\"returns\":{\"_0\":\"TxHistory struct containing the user's transaction history.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeRateLimitBypass(address)\":{\"params\":{\"user\":\"The address of the user to remove rate limiting bypass from.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setPriceOracle(address)\":{\"details\":\"Only callable by the contract owner.\",\"params\":{\"_priceOracle\":\"The address of the new price oracle contract.\"}},\"setRateLimitBypass(address)\":{\"details\":\"Only callable by the contract owner.\",\"params\":{\"user\":\"The address of the user to bypass rate limiting for.\"}},\"setRateLimitParams((uint256,uint256,uint64))\":{\"details\":\"Only callable by the contract owner. Updates the rate limit parameters and enables the rate limiter.\",\"params\":{\"params\":\"The new rate limit parameters to be set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"RateLimiter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRateLimiter()\":{\"notice\":\"Disables the rate limiter.\"},\"enableRateLimiter()\":{\"notice\":\"Enables the rate limiter.\"},\"evaluateRateLimit(string,uint256)\":{\"notice\":\"Evaluates whether a transaction exceeds the rate limit and updates the transaction history if it doesn't.\"},\"getRateLimitParams()\":{\"notice\":\"Retrieves the current rate limit parameters.\"},\"getTxBatchAtPtr(address)\":{\"notice\":\"Retrieves the transaction batch at the current pointer for a given user.\"},\"getTxHistory(address)\":{\"notice\":\"Retrieves the transaction history for a specific user.\"},\"removeRateLimitBypass(address)\":{\"notice\":\"Removes rate limit bypass for a specific user.\"},\"setPriceOracle(address)\":{\"notice\":\"Sets the price oracle address.\"},\"setRateLimitBypass(address)\":{\"notice\":\"Enables rate limit bypass for a specific user.\"},\"setRateLimitParams((uint256,uint256,uint64))\":{\"notice\":\"Sets new parameters for rate limiting.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/mixins/RateLimiter.sol\":\"RateLimiter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]},\"src/interfaces/IRateLimiter.sol\":{\"keccak256\":\"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf\",\"dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg\"]},\"src/mixins/RateLimiter.sol\":{\"keccak256\":\"0x16d42446a94fcd000bc88b7c775e99b2d5632f313c26a948408d00e33fd4ce8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36daa4f8d96f817a108969aca7c9997bda88e70799f4e06ccec915213298e82b\",\"dweb:/ipfs/QmVZj6eL1CwFhEYsSUpKrtQLcZBHo8o7847bG5uCNddV3H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"provided","type":"uint64"},{"internalType":"uint64","name":"minimum","type":"uint64"}],"type":"error","name":"InvalidBatchSize"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"type":"error","name":"InvalidDuration"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"type":"error","name":"InvalidMaxAmount"},{"inputs":[],"type":"error","name":"PredicateClient_IsRateLimited"},{"inputs":[],"type":"error","name":"RateLimiter_InvalidToken"},{"inputs":[{"internalType":"string","name":"token","type":"string"}],"type":"error","name":"TokenNotSupported"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"string","name":"token","type":"string","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"RateLimitExceeded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"duration","type":"uint256","indexed":false},{"internalType":"uint64","name":"batchSize","type":"uint64","indexed":false}],"type":"event","name":"RateLimitParamsUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"bypassRateLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"checkIfLimitExceeds","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableRateLimiter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"enableRateLimiter"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"evaluateRateLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRateLimitParams","outputs":[{"internalType":"struct RateLimitParams","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getTxBatchAtPtr","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startBlockNumber","type":"uint256"},{"internalType":"uint256","name":"endBlockNumber","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getTxHistory","outputs":[{"internalType":"struct TxHistory","name":"","type":"tuple","components":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"ptr","type":"uint256"},{"internalType":"struct TxBatch[]","name":"txBatches","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startBlockNumber","type":"uint256"},{"internalType":"uint256","name":"endBlockNumber","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isRateLimiterEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"contract IPriceAggregator","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rateLimitParams","outputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeRateLimitBypass"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_priceOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRateLimitBypass"},{"inputs":[{"internalType":"struct RateLimitParams","name":"params","type":"tuple","components":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setRateLimitParams"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"txHistory","outputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"ptr","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"disableRateLimiter()":{"details":"Only callable by the contract owner."},"enableRateLimiter()":{"details":"Only callable by the contract owner."},"evaluateRateLimit(string,uint256)":{"params":{"amount":"The amount of the token being transacted.","tokenID":"The identifier of the token being transacted."},"returns":{"_0":"bool Returns true if the transaction is within the rate limit, false otherwise."}},"getRateLimitParams()":{"returns":{"_0":"RateLimitParams struct containing the current rate limit settings."}},"getTxBatchAtPtr(address)":{"params":{"user":"The address of the user to check."},"returns":{"amount":"The total amount in the batch.","endBlockNumber":"The ending block number of the batch.","startBlockNumber":"The starting block number of the batch."}},"getTxHistory(address)":{"params":{"user":"The address of the user whose transaction history is requested."},"returns":{"_0":"TxHistory struct containing the user's transaction history."}},"owner()":{"details":"Returns the address of the current owner."},"removeRateLimitBypass(address)":{"params":{"user":"The address of the user to remove rate limiting bypass from."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setPriceOracle(address)":{"details":"Only callable by the contract owner.","params":{"_priceOracle":"The address of the new price oracle contract."}},"setRateLimitBypass(address)":{"details":"Only callable by the contract owner.","params":{"user":"The address of the user to bypass rate limiting for."}},"setRateLimitParams((uint256,uint256,uint64))":{"details":"Only callable by the contract owner. Updates the rate limit parameters and enables the rate limiter.","params":{"params":"The new rate limit parameters to be set."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"disableRateLimiter()":{"notice":"Disables the rate limiter."},"enableRateLimiter()":{"notice":"Enables the rate limiter."},"evaluateRateLimit(string,uint256)":{"notice":"Evaluates whether a transaction exceeds the rate limit and updates the transaction history if it doesn't."},"getRateLimitParams()":{"notice":"Retrieves the current rate limit parameters."},"getTxBatchAtPtr(address)":{"notice":"Retrieves the transaction batch at the current pointer for a given user."},"getTxHistory(address)":{"notice":"Retrieves the transaction history for a specific user."},"removeRateLimitBypass(address)":{"notice":"Removes rate limit bypass for a specific user."},"setPriceOracle(address)":{"notice":"Sets the price oracle address."},"setRateLimitBypass(address)":{"notice":"Enables rate limit bypass for a specific user."},"setRateLimitParams((uint256,uint256,uint64))":{"notice":"Sets new parameters for rate limiting."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/mixins/RateLimiter.sol":"RateLimiter"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"},"src/interfaces/IRateLimiter.sol":{"keccak256":"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4","urls":["bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf","dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg"],"license":"MIT"},"src/mixins/RateLimiter.sol":{"keccak256":"0x16d42446a94fcd000bc88b7c775e99b2d5632f313c26a948408d00e33fd4ce8c","urls":["bzz-raw://36daa4f8d96f817a108969aca7c9997bda88e70799f4e06ccec915213298e82b","dweb:/ipfs/QmVZj6eL1CwFhEYsSUpKrtQLcZBHo8o7847bG5uCNddV3H"],"license":"MIT"}},"version":1},"id":80} \ No newline at end of file diff --git a/out/RateLimiter.t.sol/RateLimiterTest.json b/out/RateLimiter.t.sol/RateLimiterTest.json new file mode 100644 index 00000000..598cfd43 --- /dev/null +++ b/out/RateLimiter.t.sol/RateLimiterTest.json @@ -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":"testByPassRateLimit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckIfLimitExceeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckIfLimitExceedsUnsupportedToken","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckIfLimitExceedsWithRemainingAmount","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckIfLimitExceedsWithThreeTxns","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckIfLimitExceedsWithTxn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEnableDisableRateLimiter","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEvaluateRateLimit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEvaluateRateLimitBigBatch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEvaluateRateLimitExpiredTxs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEvaluateRateLimitWithBatchContainingExpiredBlocks","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_CheckIfLimitExceeds","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_DurationExpiryAndReset","inputs":[{"name":"numTxs","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_EvaluateRateLimit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_MultipleTxsOverTime","inputs":[{"name":"txCount","type":"uint8","internalType":"uint8"},{"name":"initialAmount","type":"uint256","internalType":"uint256"},{"name":"blocksBetweenTx","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_PriceFluctuationOverTime","inputs":[{"name":"txCount","type":"uint8","internalType":"uint8"},{"name":"initialPrice","type":"uint256","internalType":"uint256"},{"name":"initialAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFuzz_SetRateLimitParams","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"},{"name":"batchSize","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetPrice","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIncorrectBatchSizeRateLimitParams","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIncorrectDurationRateLimitParams","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIncorrectMaxAmtRateLimitParams","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetPriceOracle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSetRateLimitParams","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff199182168117909255600480549091169091179055620f4240602281905564e8d4a510006023556200003f908062000069565b6024556022546200005290600a62000069565b6025553480156200006257600080fd5b5062000097565b60008160001904831182151516156200009257634e487b7160e01b600052601160045260246000fd5b500290565b61748e80620000a76000396000f3fe60806040523480156200001157600080fd5b5060043610620002315760003560e01c80639ee2bd251162000131578063cd4935b111620000bb578063f142f01b1162000086578063f142f01b14620003d5578063f4b6c4de14620003ec578063f791d2c31462000403578063f9ae83a2146200040d578063fa7626d4146200041757600080fd5b8063cd4935b114620003a0578063cdb1428f14620003b7578063d6f393b914620003c1578063e20c9f7114620003cb57600080fd5b8063ba414fa611620000fc578063ba414fa61462000367578063c854ce451462000382578063c9fd3708146200038c578063cd400285146200039657600080fd5b80639ee2bd251462000332578063b0c036e31462000349578063b5508aa91462000353578063b9e3868e146200035d57600080fd5b80633e5e3c2311620001bf57806366d9a9a0116200018a57806366d9a9a014620002e25780636ea407ff14620002fb5780637cf16910146200030557806385226c81146200030f578063916a17c6146200032857600080fd5b80633e5e3c2314620002ad5780633f7286f414620002b75780634726a1f214620002c157806362d80dbc14620002cb57600080fd5b806317fec1e4116200020057806317fec1e414620002605780631ed7831c146200027757806329a5809a14620002995780632a88873514620002a357600080fd5b80630a9254e414620002365780630b718d1414620002425780630f78dfbb146200024c578063161515521462000256575b600080fd5b6200024062000425565b005b62000240620005d7565b620002406200092d565b6200024062000bfc565b620002406200027136600462004d41565b62000fa1565b62000281620011c9565b60405162000290919062004d70565b60405180910390f35b620002406200122d565b6200024062001474565b62000281620015b7565b6200028162001619565b620002406200167b565b62000240620002dc36600462004dbf565b62001862565b620002ec62001a1d565b60405162000290919062004dd9565b6200024062001b10565b6200024062001ba5565b6200031962001c37565b60405162000290919062004eed565b620002ec62001d11565b620002406200034336600462004f53565b62001dfb565b6200024062002321565b62000319620023b3565b620002406200248d565b620003716200258a565b604051901515815260200162000290565b62000240620026b5565b6200024062002bf7565b6200024062002d7b565b62000240620003b136600462004f88565b620030c5565b620002406200343c565b6200024062003704565b62000281620037b9565b62000240620003e636600462004fdf565b6200381b565b62000240620003fd3660046200501b565b62003944565b6200024062003c13565b6200024062003e58565b600054620003719060ff1681565b6040805180820190915260038082526208aa8960eb1b60209092019182526200045191601b9162004c69565b50602554601c55604051620004669062004cf8565b604051809103906000f08015801562000483573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560408051606081018252602454808252600a60208084018290526005938501849052601e92909255601f55805467ffffffffffffffff1916909117905551620004ed9062004d06565b604051809103906000f0801580156200050a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055601c5460405163117008c960e11b81526322e01192916200055291601b919060040162005136565b600060405180830381600087803b1580156200056d57600080fd5b505af115801562000582573d6000803e3d6000fd5b50506021546200059e92506001600160a01b0316905062003f8d565b60408051606081018252601e548152601f54602080830191909152546001600160401b031691810191909152620005d59062003feb565b565b600360056000620005e9838062005170565b602154604051630bbceb3360e21b81526001600160401b039290921692506000916001600160a01b0390911690632ef3accc906200063890601b9068056bc75e2d631000009060040162005136565b602060405180830381865afa15801562000656573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067c9190620051a2565b601d54604080516060810182526024548152602081018790526001600160401b0388168183015290516336bd0b5b60e21b81529293506001600160a01b039091169163daf42d6c91620006d291600401620051bc565b600060405180830381600087803b158015620006ed57600080fd5b505af115801562000702573d6000803e3d6000fd5b5050505060005b828110156200080d576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b1580156200075b57600080fd5b505af115801562000770573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f49150620007b190601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af1158015620007d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007f79190620051f7565b5080620008048162005215565b91505062000709565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562000858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008829190810190620052a7565b905060006200089b6001600160401b03871686620053e3565b620008b06001600160401b03881686620053fa565b620008bc919062005411565b9050600081836040015151620008d3919062005411565b905060006200090385620008f16001600160401b038b16856200542b565b620008fd91906200542b565b62004173565b90506200091584602001518462004196565b835162000923908262004196565b5050505050505050565b602154604051630bbceb3360e21b8152600a916003916000916001600160a01b031690632ef3accc906200096a90601b9060649060040162005136565b602060405180830381865afa15801562000988573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009ae9190620051a2565b601d54604080516060810182526024548152600a602082015260648183015290516336bd0b5b60e21b81529293506001600160a01b039091169163daf42d6c91620009fc91600401620051bc565b600060405180830381600087803b15801562000a1757600080fd5b505af115801562000a2c573d6000803e3d6000fd5b5050505060005b8381101562000b59576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b15801562000a8557600080fd5b505af115801562000a9a573d6000803e3d6000fd5b5050505060005b8381101562000b4357601d546040516317a270fd60e21b81526001600160a01b0390911690635e89c3f49062000ae790601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562000b07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b2d9190620051f7565b508062000b3a8162005215565b91505062000aa1565b508062000b508162005215565b91505062000a33565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562000ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bce9190810190620052a7565b9050600062000be383620008f187876200542b565b905062000bf582600001518262004196565b5050505050565b601d5460408051606081018252602454815260056020820181905260018284015291516336bd0b5b60e21b815291926003926001600160a01b039091169163daf42d6c9162000c4f9190600401620051bc565b600060405180830381600087803b15801562000c6a57600080fd5b505af115801562000c7f573d6000803e3d6000fd5b5050505060005b8181101562000d8a576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b15801562000cd857600080fd5b505af115801562000ced573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062000d2e90601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562000d4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d749190620051f7565b508062000d818162005215565b91505062000c86565b50600080516020620072cd833981519152631f7b4f3062000dad8460056200542b565b6040518263ffffffff1660e01b815260040162000dcc91815260200190565b600060405180830381600087803b15801562000de757600080fd5b505af115801562000dfc573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062000e3d90601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562000e5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e839190620051f7565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562000ece573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ef89190810190620052a7565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062000f3c90601b9068056bc75e2d631000009060040162005136565b602060405180830381865afa15801562000f5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f809190620051a2565b9050600062000f8f8262004173565b905062000bf583600001518262004196565b62000fb881600168056bc75e2d631000006200425a565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062000ff490601b9060649060040162005136565b602060405180830381865afa15801562001012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010389190620051a2565b90506000670de0b6b3a76400006200105183856200542b565b6200105d9190620053fa565b601d54604051630598b62160e31b815291925060009182916001600160a01b031690632cc5b108906200109a908990601b908a906004016200544d565b6040805180830381865afa158015620010b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010dd919062005483565b91509150602454831162001159576200112c826040518060400160405280601c81526020017f4c696d69742073686f756c64206e6f7420626520657863656564656400000000815250620042a2565b62001153816000604051806060016040528060278152602001620072ed60279139620042af565b620011c1565b6200119a826040518060400160405280601881526020017f4c696d69742073686f756c642062652065786365656465640000000000000000815250620042ec565b620011c1816000604051806060016040528060368152602001620073956036913962004325565b505050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200122357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001204575b5050505050905090565b601d5460408051632a32a25960e21b815290516000926001600160a01b03169163a8ca89649160048083019260609291908290030181865afa15801562001278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129e9190620054b2565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90620012da90601b9060649060040162005136565b602060405180830381865afa158015620012f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200131e9190620051a2565b601d54604051630598b62160e31b8152919250670de0b6b3a7640000916000916001600160a01b031690632cc5b1089062001363903390601b9087906004016200544d565b6040805180830381865afa15801562001380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a6919062005483565b509050620013b681600062004361565b8351600090620013c8908590620053fa565b620013d590600162005519565b620013e990670de0b6b3a76400006200542b565b601d54604051630598b62160e31b81529192506001600160a01b031690632cc5b1089062001421903390601b9086906004016200544d565b6040805180830381865afa1580156200143e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001464919062005483565b50915062000bf582600162004361565b6000604051620014849062004d06565b604051809103906000f080158015620014a1573d6000803e3d6000fd5b506040805180820182526004808252635742544360e01b6020830152915163117008c960e11b8152929350916101a4916001600160a01b038516916322e0119291620014f291869186910162005534565b600060405180830381600087803b1580156200150d57600080fd5b505af115801562001522573d6000803e3d6000fd5b50505050620015318362003f8d565b604051630bbceb3360e21b8152620015b2906001600160a01b03851690632ef3accc906200156790869060649060040162005534565b602060405180830381865afa15801562001585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ab9190620051a2565b8262004196565b505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001223576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001204575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001223576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001204575050505050905090565b601d5460405163ed5f43b760e01b8152306004820152620016f4916001600160a01b03169063ed5f43b7906024015b602060405180830381865afa158015620016c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016ee9190620051f7565b620044a5565b601d5460405163286df6b760e01b81523060048201526001600160a01b039091169063286df6b790602401600060405180830381600087803b1580156200173a57600080fd5b505af11580156200174f573d6000803e3d6000fd5b5050601d5460405163ed5f43b760e01b8152306004820152620017cd93506001600160a01b03909116915063ed5f43b790602401602060405180830381865afa158015620017a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017c79190620051f7565b620044ac565b601d54604051636306032360e11b81523060048201526001600160a01b039091169063c60c064690602401600060405180830381600087803b1580156200181357600080fd5b505af115801562001828573d6000803e3d6000fd5b5050601d5460405163ed5f43b760e01b8152306004820152620005d593506001600160a01b03909116915063ed5f43b790602401620016aa565b6200187981600168056bc75e2d631000006200425a565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90620018b590601b9060649060040162005136565b602060405180830381865afa158015620018d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018f99190620051a2565b90506000670de0b6b3a76400006200191283856200542b565b6200191e9190620053fa565b601d546040516317a270fd60e21b81529192506000916001600160a01b0390911690635e89c3f4906200195990601b90889060040162005136565b6020604051808303816000875af115801562001979573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200199f9190620051f7565b90506024548211620019d657620019d0816040518060600160405280602181526020016200741860219139620042ec565b62001a17565b62001a17816040518060400160405280601d81526020017f52617465206c696d69742073686f756c64206265206578636565646564000000815250620042a2565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001b075760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001aee57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001aaf5790505b5050505050815250508152602001906001019062001a41565b50505050905090565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001b5e57600080fd5b505af115801562001b73573d6000803e3d6000fd5b5050604080516060810182526000815260016020820152600491810191909152915062001ba290508162003feb565b50565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001bf357600080fd5b505af115801562001c08573d6000803e3d6000fd5b5050604080516060810182526005815260006020820152600491810191909152915062001ba290508162003feb565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001b0757838290600052602060002001805462001c7d9062005051565b80601f016020809104026020016040519081016040528092919081815260200182805462001cab9062005051565b801562001cfc5780601f1062001cd05761010080835404028352916020019162001cfc565b820191906000526020600020905b81548152906001019060200180831162001cde57829003601f168201915b50505050508152602001906001019062001c5b565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001b075760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001de257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001da35790505b5050505050815250508152602001906001019062001d35565b62001e0a82600160326200425a565b915062001e22816001670de0b6b3a76400006200425a565b9050600062001e536040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062001e8f90601b9060649060040162005136565b602060405180830381865afa15801562001ead573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ed39190620051a2565b90506000670de0b6b3a764000062001eec83866200542b565b62001ef89190620053fa565b601d5460408051606081018252602454815260056020820181905260018284015291516336bd0b5b60e21b815293945090926001600160a01b039092169163daf42d6c9162001f4a91600401620051bc565b600060405180830381600087803b15801562001f6557600080fd5b505af115801562001f7a573d6000803e3d6000fd5b5050505060005b86811015620021745760405163ca669fa760e01b81526001600160a01b0386166004820152600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562001fdb57600080fd5b505af115801562001ff0573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b8152600093506001600160a01b039091169150635e89c3f4906200202c90601b908b9060040162005136565b6020604051808303816000875af11580156200204c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020729190620051f7565b602454909150846200208684600162005519565b6200209291906200542b565b11620020c357620020bd816040518060600160405280603181526020016200731460319139620042ec565b620020e8565b620020e8816040518060600160405280602d8152602001620073cb602d9139620042a2565b600080516020620072cd833981519152631f7b4f306200210a43600162005519565b6040518263ffffffff1660e01b81526004016200212991815260200190565b600060405180830381600087803b1580156200214457600080fd5b505af115801562002159573d6000803e3d6000fd5b505050505080806200216b9062005215565b91505062001f81565b50600080516020620072cd833981519152631f7b4f3062002196834362005519565b620021a390600162005519565b6040518263ffffffff1660e01b8152600401620021c291815260200190565b600060405180830381600087803b158015620021dd57600080fd5b505af1158015620021f2573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0387166004820152600080516020620072cd833981519152925063ca669fa79150602401600060405180830381600087803b1580156200224757600080fd5b505af11580156200225c573d6000803e3d6000fd5b5050601d54602454600093506001600160a01b039091169150635e89c3f490601b906200228c9060019062005411565b6040518363ffffffff1660e01b8152600401620022ab92919062005136565b6020604051808303816000875af1158015620022cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022f19190620051f7565b905062002318816040518060600160405280603081526020016200734560309139620042ec565b50505050505050565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200236f57600080fd5b505af115801562002384573d6000803e3d6000fd5b5050604080516060810182526005815260016020820152600091810191909152915062001ba290508162003feb565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001b07578382906000526020600020018054620023f99062005051565b80601f0160208091040260200160405190810160405280929190818152602001828054620024279062005051565b8015620024785780601f106200244c5761010080835404028352916020019162002478565b820191906000526020600020905b8154815290600101906020018083116200245a57829003601f168201915b505050505081526020019060010190620023d7565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024db57600080fd5b505af1158015620024f0573d6000803e3d6000fd5b5050601d54604051630598b62160e31b81523360048083019190915260606024830152606482015263444f474560e01b6084820152600260448201526001600160a01b039091169250632cc5b108915060a4016040805180830381865afa15801562002560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002586919062005483565b5050565b60008054610100900460ff1615620025ab5750600054610100900460ff1690565b6000600080516020620072cd8339815191523b15620026b05760408051600080516020620072cd833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002632917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005549565b60408051601f19818403018152908290526200264e916200557c565b6000604051808303816000865af19150503d80600081146200268d576040519150601f19603f3d011682016040523d82523d6000602084013e62002692565b606091505b5091505080806020019051810190620026ac9190620051f7565b9150505b919050565b602154604051630bbceb3360e21b81526003916000916001600160a01b0390911690632ef3accc90620026f190601b9060649060040162005136565b602060405180830381865afa1580156200270f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027359190620051a2565b9050600660036000620027526001600160401b03861684620053fa565b601d54604080516060810182526024548152600a60208201526001600160401b0389168183015290516336bd0b5b60e21b81529293506001600160a01b039091169163daf42d6c91620027a891600401620051bc565b600060405180830381600087803b158015620027c357600080fd5b505af1158015620027d8573d6000803e3d6000fd5b5060009250829150505b8481101562002909576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b1580156200283457600080fd5b505af115801562002849573d6000803e3d6000fd5b5050505060005b84811015620028f357601d546040516317a270fd60e21b81526001600160a01b0390911690635e89c3f4906200289690601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af1158015620028b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028dc9190620051f7565b925080620028ea8162005215565b91505062002850565b5080620029008162005215565b915050620027e2565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562002954573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200297e9190810190620052a7565b905060006200299387620008f188886200542b565b9050620029a582600001518262004196565b620029b68260400151518562004196565b620029c78260200151600062004196565b601d546040805160608101825260245481526001602082018190528183015290516336bd0b5b60e21b81526001600160a01b039092169163daf42d6c9162002a1291600401620051bc565b600060405180830381600087803b15801562002a2d57600080fd5b505af115801562002a42573d6000803e3d6000fd5b50600080516020620072cd8339815191529250631f7b4f30915062002a6b905088600162005519565b6040518263ffffffff1660e01b815260040162002a8a91815260200190565b600060405180830381600087803b15801562002aa557600080fd5b505af115801562002aba573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062002afb90601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562002b1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b419190620051f7565b601d54604051631c04ac7560e21b81523060048201529194506001600160a01b031690637012b1d490602401600060405180830381865afa15801562002b8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002bb59190810190620052a7565b915062002bc28762004173565b905062002bd482600001518262004196565b620009238260200151600184604001515162002bf1919062005411565b62004196565b601d60009054906101000a90046001600160a01b03166001600160a01b031663b74437a56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002c4857600080fd5b505af115801562002c5d573d6000803e3d6000fd5b5050505062002cb9601d60009054906101000a90046001600160a01b03166001600160a01b0316632f53036e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016c8573d6000803e3d6000fd5b601d60009054906101000a90046001600160a01b03166001600160a01b031663c47f1ac36040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002d0a57600080fd5b505af115801562002d1f573d6000803e3d6000fd5b50505050620005d5601d60009054906101000a90046001600160a01b03166001600160a01b0316632f53036e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017a1573d6000803e3d6000fd5b600062002daa6040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062002de690601b9060649060040162005136565b602060405180830381865afa15801562002e04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e2a9190620051a2565b60405163ca669fa760e01b81526001600160a01b0384166004820152909150670de0b6b3a764000090600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562002e8857600080fd5b505af115801562002e9d573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062002ed690601b90859060040162005136565b6020604051808303816000875af115801562002ef6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f1c9190620051f7565b5060405163ca669fa760e01b81526001600160a01b0384166004820152600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562002f6e57600080fd5b505af115801562002f83573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062002fbc90601b90859060040162005136565b6020604051808303816000875af115801562002fdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030029190620051f7565b50601d54604051630598b62160e31b815260009182916001600160a01b0390911690632cc5b108906200303f908890601b9088906004016200544d565b6040805180830381865afa1580156200305c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003082919062005483565b915091506200309382600062004361565b6000620030b7620030a68660036200542b565b620008fd9064e8d4a5100062005411565b9050620011c1828262004196565b620030d78360ff16600160326200425a565b9250620030f58266038d7ea4c68000670de0b6b3a76400006200425a565b9150620031098160ff166001600a6200425a565b602154604051630bbceb3360e21b815291925060009182916001600160a01b031690632ef3accc906200314590601b9060649060040162005136565b602060405180830381865afa15801562003163573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031899190620051a2565b905060005b8560ff168160ff1610156200338f576000620031b560ff831666038d7ea4c680006200559a565b620031ca9066ffffffffffffff168762005519565b90506000670de0b6b3a7640000620031e385846200542b565b620031ef9190620053fa565b9050620031fd818662005519565b601d546040516317a270fd60e21b81529196506000916001600160a01b0390911690635e89c3f4906200323890601b90879060040162005136565b6020604051808303816000875af115801562003258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327e9190620051f7565b90506024548611620032b557620032af816040518060600160405280602181526020016200741860219139620042ec565b620032ff565b620032f6816040518060400160405280601d81526020017f52617465206c696d69742073686f756c64206265206578636565646564000000815250620042a2565b5050506200338f565b600080516020620072cd833981519152631f7b4f306200332360ff8a164362005519565b6040518263ffffffff1660e01b81526004016200334291815260200190565b600060405180830381600087803b1580156200335d57600080fd5b505af115801562003372573d6000803e3d6000fd5b5050505050505080806200338690620055c3565b9150506200318e565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa158015620033da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034049190810190620052a7565b9050620011c181600001516200341c60245462004173565b6040518060600160405280603081526020016200729d6030913962004527565b60006200346b6040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90620034a790601b9060649060040162005136565b602060405180830381865afa158015620034c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034eb9190620051a2565b9050600081601d60009054906101000a90046001600160a01b03166001600160a01b031663a8ca89646040518163ffffffff1660e01b8152600401606060405180830381865afa15801562003544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200356a9190620054b2565b51620035779190620053fa565b6200358b90670de0b6b3a76400006200542b565b60405163ca669fa760e01b81526001600160a01b0385166004820152909150600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b158015620035df57600080fd5b505af1158015620035f4573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f491506200362d90601b90859060040162005136565b6020604051808303816000875af11580156200364d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036739190620051f7565b50601d54604051630598b62160e31b815260009182916001600160a01b0390911690632cc5b10890620036b0908890601b9088906004016200544d565b6040805180830381865afa158015620036cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f3919062005483565b9150915062000bf582600162004361565b6000604051620037149062004d06565b604051809103906000f08015801562003731573d6000803e3d6000fd5b5090506200373f8162003f8d565b601d5460408051632630c12f60e01b8152905162001ba2926001600160a01b031691632630c12f9160048083019260209291908290030181865afa1580156200378c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037b29190620055e6565b8262004564565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001223576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001204575050505050905090565b6200382b8360016103e86200425a565b92506200384282620f424064e8d4a510006200425a565b91506200385c816001600160401b0316600160646200425a565b905060006040518060600160405280848152602001858152602001836001600160401b03168152509050620038918162003feb565b601d5460408051632a32a25960e21b815290516000926001600160a01b03169163a8ca89649160048083019260609291908290030181865afa158015620038dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039029190620054b2565b90506200391481602001518662004196565b805162003922908562004196565b62000bf581604001516001600160401b0316846001600160401b031662004196565b620039568360ff16600160326200425a565b92506200396c82620f42406305f5e1006200425a565b91506200398a8166038d7ea4c68000670de0b6b3a76400006200425a565b905060005b8360ff168160ff16101562001a17576000620039b260ff8316620186a062005606565b620039c39062ffffff168562005519565b90506000620039dd60ff841666038d7ea4c680006200559a565b620039f29066ffffffffffffff168562005519565b60215460405163117008c960e11b81529192506001600160a01b0316906322e011929062003a2890601b90869060040162005136565b600060405180830381600087803b15801562003a4357600080fd5b505af115801562003a58573d6000803e3d6000fd5b505050506000670de0b6b3a7640000838362003a7591906200542b565b62003a819190620053fa565b601d546040516317a270fd60e21b81529192506000916001600160a01b0390911690635e89c3f49062003abc90601b90879060040162005136565b6020604051808303816000875af115801562003adc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b029190620051f7565b9050602454821162003b395762003b33816040518060600160405280602181526020016200741860219139620042ec565b62003b84565b62003b7a816040518060400160405280601d81526020017f52617465206c696d69742073686f756c64206265206578636565646564000000815250620042a2565b5050505062001a17565b600080516020620072cd833981519152631f7b4f3062003ba643600162005519565b6040518263ffffffff1660e01b815260040162003bc591815260200190565b600060405180830381600087803b15801562003be057600080fd5b505af115801562003bf5573d6000803e3d6000fd5b5050505050505050808062003c0a90620055c3565b9150506200398f565b600062003c426040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062003c7e90601b9060649060040162005136565b602060405180830381865afa15801562003c9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cc29190620051a2565b60405163ca669fa760e01b81526001600160a01b0384166004820152909150670de0b6b3a764000090600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562003d2057600080fd5b505af115801562003d35573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062003d6e90601b90859060040162005136565b6020604051808303816000875af115801562003d8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003db49190620051f7565b50601d54604051630598b62160e31b815260009182916001600160a01b0390911690632cc5b1089062003df1908890601b9088906004016200544d565b6040805180830381865afa15801562003e0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e34919062005483565b9150915062003e4582600062004361565b6000620030b7620030a68660026200542b565b60408051606081018252621e84808152600a602082015260039181019190915262003e838162003feb565b601d5460408051632a32a25960e21b815290516000926001600160a01b03169163a8ca89649160048083019260609291908290030181865afa15801562003ece573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ef49190620054b2565b905062003f0a8160200151836020015162004196565b8051825162003f1a919062004196565b62003f4081604001516001600160401b031683604001516001600160401b031662004196565b601d54604080516317a981b760e11b8152905162002586926001600160a01b031691632f53036e9160048083019260209291908290030181865afa158015620017a1573d6000803e3d6000fd5b601d5460405163530e784f60e01b81526001600160a01b0383811660048301529091169063530e784f906024015b600060405180830381600087803b15801562003fd657600080fd5b505af115801562000bf5573d6000803e3d6000fd5b60008160200151116200405e5760405162461bcd60e51b815260206004820152603060248201527f526174654c696d69746572546573743a206475726174696f6e206d757374206260448201526f0652067726561746572207468616e20360841b60648201526084015b60405180910390fd5b8051620040c85760405162461bcd60e51b815260206004820152603160248201527f526174654c696d69746572546573743a206d6178416d6f756e74206d75737420604482015270062652067726561746572207468616e203607c1b606482015260840162004055565b600081604001516001600160401b031611620041415760405162461bcd60e51b815260206004820152603160248201527f526174654c696d69746572546573743a20626174636853697a65206d75737420604482015270062652067726561746572207468616e203607c1b606482015260840162004055565b601d546040516336bd0b5b60e21b81526001600160a01b039091169063daf42d6c9062003fbb908490600401620051bc565b600062004190602354602254846200464d9092919063ffffffff16565b92915050565b80821462002586576000805160206200727d833981519152604051620041f89060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160008051602062007439833981519152826040516200422091906200562b565b60405180910390a1600080516020620074398339815191528160405162004248919062005664565b60405180910390a1620025866200466c565b60006200426984848462004775565b90506200429b6040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262004962565b9392505050565b62002586821582620042ec565b81831015620015b2576000805160206200737583398151915281604051620042d891906200568f565b60405180910390a1620015b2838362004a02565b81620025865760008051602062007375833981519152816040516200431291906200568f565b60405180910390a16200258682620044ac565b818314620015b25760008051602062007375833981519152816040516200434d91906200568f565b60405180910390a1620015b2838362004196565b8015158215151462002586576000805160206200727d833981519152604051620043c79060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f6040820152616c5d60f01b606082015260800190565b60405180910390a1600080516020620073758339815191528262004409576040518060400160405280600581526020016466616c736560d81b81525062004427565b604051806040016040528060048152602001637472756560e01b8152505b604051620044369190620056c0565b60405180910390a1600080516020620073758339815191528162004478576040518060400160405280600581526020016466616c736560d81b81525062004496565b604051806040016040528060048152602001637472756560e01b8152505b60405162004248919062005707565b62001ba281155b8062001ba2576000805160206200727d833981519152604051620045019060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001ba26200466c565b6000620045208262004af1565b5092915050565b81831115620015b25760008051602062007375833981519152816040516200455091906200568f565b60405180910390a1620015b2838362004c06565b806001600160a01b0316826001600160a01b03161462002586576000805160206200727d833981519152604051620045db9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004614919062005732565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162004248919062005777565b60008260001904841183021582026200466557600080fd5b5091020490565b600080516020620072cd8339815191523b15620047645760408051600080516020620072cd833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620046ff929160200162005549565b60408051601f19818403018152908290526200471b916200557c565b6000604051808303816000865af19150503d80600081146200475a576040519150601f19603f3d011682016040523d82523d6000602084013e6200475f565b606091505b505050505b6000805461ff001916610100179055565b600081831115620047ef5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840162004055565b828410158015620048005750818411155b156200480e5750826200429b565b60006200481c848462005411565b6200482990600162005519565b9050600385111580156200483c57508481115b1562004857576200484e858562005519565b9150506200429b565b62004866600360001962005411565b85101580156200488257506200487f8560001962005411565b81115b15620048a257620048968560001962005411565b6200484e908462005411565b8285111562004901576000620048b9848762005411565b90506000620048c98383620053e3565b905080620048dd578493505050506200429b565b6001620048eb828862005519565b620048f7919062005411565b935050506200495a565b838510156200495a57600062004918868662005411565b90506000620049288383620053e3565b9050806200493c578593505050506200429b565b62004948818662005411565b6200495590600162005519565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024016200498e92919062005534565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620049c591906200557c565b600060405180830381855afa9150503d8060008114620011c1576040519150601f19603f3d011682016040523d82523d6000602084013e620011c1565b8082101562002586576000805160206200727d83398151915260405162004a659060208082526022908201527f4572726f723a2061203e3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a16040805181815260098183015268202056616c7565206160b81b6060820152602081018490529051600080516020620074398339815191529181900360800190a1604080518181526009918101919091526810102b30b63ab2903160b91b606082015260208101829052600080516020620074398339815191529060800162004248565b6000808260405160200162004b0791906200557c565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150600080516020620072cd8339815191529063ffa1864990602401602060405180830381865afa15801562004b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b949190620055e6565b6040516318caf8e360e31b8152909250600080516020620072cd8339815191529063c657c7189062004bcd9085908790600401620057a2565b600060405180830381600087803b15801562004be857600080fd5b505af115801562004bfd573d6000803e3d6000fd5b50505050915091565b8082111562002586576000805160206200727d83398151915260405162004a659060208082526022908201527f4572726f723a2061203c3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b82805462004c779062005051565b90600052602060002090601f01602090048101928262004c9b576000855562004ce6565b82601f1062004cb657805160ff191683800117855562004ce6565b8280016001018555821562004ce6579182015b8281111562004ce657825182559160200191906001019062004cc9565b5062004cf492915062004d14565b5090565b6115e080620057c983390190565b6104d48062006da983390190565b5b8082111562004cf4576000815560010162004d15565b6001600160a01b038116811462001ba257600080fd5b6000806040838503121562004d5557600080fd5b823562004d628162004d2b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101562004db35783516001600160a01b03168352928401929184019160010162004d8c565b50909695505050505050565b60006020828403121562004dd257600080fd5b5035919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562004e8157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562004e6b5783516001600160e01b0319168252928b019260019290920191908b019062004e3f565b50978a0197955050509187019160010162004e01565b50919998505050505050505050565b60005b8381101562004ead57818101518382015260200162004e93565b8381111562001a175750506000910152565b6000815180845262004ed981602086016020860162004e90565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562004f4657603f1988860301845262004f3385835162004ebf565b9450928501929085019060010162004f14565b5092979650505050505050565b6000806040838503121562004f6757600080fd5b50508035926020909101359150565b803560ff81168114620026b057600080fd5b60008060006060848603121562004f9e57600080fd5b62004fa98462004f76565b92506020840135915062004fc06040850162004f76565b90509250925092565b6001600160401b038116811462001ba257600080fd5b60008060006060848603121562004ff557600080fd5b83359250602084013591506040840135620050108162004fc9565b809150509250925092565b6000806000606084860312156200503157600080fd5b6200503c8462004f76565b95602085013595506040909401359392505050565b600181811c908216806200506657607f821691505b602082108114156200508857634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c9080831680620050a957607f831692505b6020808410821415620050cc57634e487b7160e01b600052602260045260246000fd5b83885260208801828015620050ea5760018114620050fc5762005129565b60ff1987168252828201975062005129565b60008981526020902060005b87811015620051235781548482015290860190840162005108565b83019850505b5050505050505092915050565b6040815260006200514b60408301856200508e565b90508260208301529392505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516818304811182151516156200519957620051996200515a565b02949350505050565b600060208284031215620051b557600080fd5b5051919050565b81518152602080830151908201526040918201516001600160401b03169181019190915260600190565b80518015158114620026b057600080fd5b6000602082840312156200520a57600080fd5b6200429b82620051e6565b60006000198214156200522c576200522c6200515a565b5060010190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200526e576200526e62005233565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200529f576200529f62005233565b604052919050565b60006020808385031215620052bb57600080fd5b82516001600160401b0380821115620052d357600080fd5b81850191506060808388031215620052ea57600080fd5b620052f462005249565b835181528484015185820152604080850151848111156200531457600080fd5b80860195505088601f8601126200532a57600080fd5b8451848111156200533f576200533f62005233565b6200534f878260051b0162005274565b818152878101955090840286018701908a8211156200536d57600080fd5b958701955b81871015620053ba5784878c0312156200538c5760008081fd5b6200539662005249565b87518152888801518982015283880151848201528652958401959487019462005372565b9183019190915250979650505050505050565b634e487b7160e01b600052601260045260246000fd5b600082620053f557620053f5620053cd565b500690565b6000826200540c576200540c620053cd565b500490565b6000828210156200542657620054266200515a565b500390565b60008160001904831182151516156200544857620054486200515a565b500290565b6001600160a01b038416815260606020820181905260009062005473908301856200508e565b9050826040830152949350505050565b600080604083850312156200549757600080fd5b620054a283620051e6565b9150602083015190509250929050565b600060608284031215620054c557600080fd5b604051606081018181106001600160401b0382111715620054ea57620054ea62005233565b8060405250825181526020830151602082015260408301516200550d8162004fc9565b60408201529392505050565b600082198211156200552f576200552f6200515a565b500190565b6040815260006200514b604083018562004ebf565b6001600160e01b03198316815281516000906200556e81600485016020870162004e90565b919091016004019392505050565b600082516200559081846020870162004e90565b9190910192915050565b600066ffffffffffffff808316818516818304811182151516156200519957620051996200515a565b600060ff821660ff811415620055dd57620055dd6200515a565b60010192915050565b600060208284031215620055f957600080fd5b81516200429b8162004d2b565b600062ffffff808316818516818304811182151516156200519957620051996200515a565b6040815260006200565660408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200565660408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200429b608083018462004ebf565b604081526000620056eb60408301600a8152690808080808081319599d60b21b602082015260400190565b8281036020840152620056ff818562004ebf565b949350505050565b604081526000620056eb60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200575d60408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200575d60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6001600160a01b0383168152604060208201819052600090620056ff9083018462004ebf56fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6115628061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637012b1d4116100ad578063c47f1ac311610071578063c47f1ac3146102f5578063c60c0646146102fd578063daf42d6c14610310578063ed5f43b714610323578063f2fde38b1461034657600080fd5b80637012b1d414610281578063715018a6146102a15780638da5cb5b146102a9578063a8ca8964146102ba578063b74437a5146102ed57600080fd5b80632cc5b108116100f45780632cc5b108146101d55780632e6c02e3146101ff5780632f53036e1461023e578063530e784f1461025b5780635e89c3f41461026e57600080fd5b80630a6d4d5814610126578063112f6a31146101675780632630c12f14610195578063286df6b7146101c0575b600080fd5b61014d6101343660046110f5565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152015b60405180910390f35b61017a6101753660046110f5565b610359565b6040805193845260208401929092529082015260600161015e565b6007546101a8906001600160a01b031681565b6040516001600160a01b03909116815260200161015e565b6101d36101ce3660046110f5565b61044d565b005b6101e86101e3366004611158565b610479565b60408051921515835260208301919091520161015e565b60045460055460065461021a9291906001600160401b031683565b6040805193845260208401929092526001600160401b03169082015260600161015e565b60035461024b9060ff1681565b604051901515815260200161015e565b6101d36102693660046110f5565b610579565b61024b61027c3660046111b1565b6105a3565b61029461028f3660046110f5565b610781565b60405161015e91906111fc565b6101d3610855565b6000546001600160a01b03166101a8565b6102c2610869565b604080518251815260208084015190820152918101516001600160401b03169082015260600161015e565b6101d36108c4565b6101d36108d8565b6101d361030b3660046110f5565b6108ef565b6101d361031e366004611279565b610918565b61024b6103313660046110f5565b60026020526000908152604090205460ff1681565b6101d36103543660046110f5565b610a7f565b6001600160a01b0381166000908152600160208181526040808420815160608101835281548152938101548484015260028101805483518186028101860185528181528796879687969195949186019390879084015b828210156103ff57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906103af565b505050508152505090506000816040015182602001518151811061042557610425611291565b6020026020010151905080600001518160200151826040015194509450945050509193909250565b610455610af8565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080806104a261048c600660126112bd565b61049790600a6113b8565b8590620f4240610b52565b600754604051630bbceb3360e21b815291925060009161052f916001600160a01b031690632ef3accc906104de908b908b908b906004016113ed565b602060405180830381865afa1580156104fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051f9190611411565b8390670de0b6b3a7640000610b52565b9050600061055a610542600660126112bd565b61054d90600a6113b8565b60045490620f4240610b52565b90506105698989898585610b70565b9450945050505094509492505050565b610581610af8565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806105cb6105b5600660126112bd565b6105c090600a6113b8565b8490620f4240610b52565b600754604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90610605908990899089906004016113ed565b602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190611411565b600754604051630bbceb3360e21b81529192506000916106d3916001600160a01b031690632ef3accc90610682908b908b908b906004016113ed565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c39190611411565b8490670de0b6b3a7640000610b52565b905060006106e6610542600660126112bd565b905060006106f7338a8a8686610b70565b509050801561074f5760045460405133917fe2274a8e4f5712295a052754df3513686fd79e6fe1e6dbdd609b8b0b1fbc133c91610739918d918d918d9161142a565b60405180910390a260009550505050505061077a565b600061075a43610c53565b905061076581610c7a565b61076f4385610d26565b600196505050505050505b9392505050565b6107a560405180606001604052806000815260200160008152602001606081525090565b6001600160a01b03821660009081526001602081815260408084208151606081018352815481529381015484840152600281018054835181860281018601855281815295969295938701949192909184015b8282101561084757838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906107f7565b505050915250909392505050565b61085d610af8565b6108676000610d5e565b565b6108966040518060600160405280600081526020016000815260200160006001600160401b031681525090565b5060408051606081018252600454815260055460208201526006546001600160401b03169181019190915290565b6108cc610af8565b6003805460ff19169055565b6108e0610af8565b6003805460ff19166001179055565b6108f7610af8565b6001600160a01b03166000908152600260205260409020805460ff19169055565b610920610af8565b620f424081351080610937575064e8d4a510008135115b1561097157604051638b39eb3360e01b815281356004820152620f4240602482015264e8d4a5100060448201526064015b60405180910390fd5b6001816020013510156109a45760405163387a058b60e01b81526020820135600482015260016024820152604401610968565b60016109b66060830160408401611466565b6001600160401b03161015610a01576109d56060820160408301611466565b604051630161019760e01b81526001600160401b03909116600482015260016024820152604401610968565b806004610a0e8282611483565b50506003805460ff191660011790557fdf1f77551f6fd65be59ba5210e34eba28a083b1e076a140cd029c3b0794d574f81356020830135610a556060850160408601611466565b6040805193845260208401929092526001600160401b03169082015260600160405180910390a150565b610a87610af8565b6001600160a01b038116610aec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610968565b610af581610d5e565b50565b6000546001600160a01b031633146108675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610968565b6000826000190484118302158202610b6957600080fd5b5091020490565b60075460405163034d94bb60e21b815260009182916001600160a01b0390911690630d3652ec90610ba790899089906004016114c3565b602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be891906114d7565b610c0957858560405163c16fc3ad60e01b81526004016109689291906114c3565b6000610c1443610c53565b90506000610c228983610dae565b90506000610c328a838989610efb565b90506000610c428b848a8a610f64565b9b919a509098505050505050505050565b6005546000908210610c7157600554610c6c90836112bd565b610c74565b60005b92915050565b3360009081526001602081905260409091208054918101549091905b600283015481108015610ccf575083836002018281548110610cba57610cba611291565b90600052602060002090600302016002015411155b15610d1a57826002018181548110610ce957610ce9611291565b90600052602060002090600302016000015482610d0691906112bd565b915080610d12816114f9565b915050610c96565b90825560019091015550565b336000908152600160205260409020610d3f8184610f9d565b15610d5357610d4e8183610feb565b505050565b610d4e818484611052565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600090815260016020818152604080842081516060810183528154815293810154848401526002810180548351818602810186018552818152879695939486019390929190879084015b82821015610e525783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610e02565b50505091525050604081015151909150610e70576000915050610c74565b805160208201515b82604001515181108015610eac57508483604001518281518110610e9e57610e9e611291565b602002602001015160400151105b15610ef25782604001518181518110610ec757610ec7611291565b60200260200101516000015182610ede91906112bd565b915080610eea816114f9565b915050610e78565b50949350505050565b6001600160a01b03841660009081526002602052604081205460ff1615610f23575080610f5c565b81610f2e8486611514565b11610f4f5782610f3e85846112bd565b610f4891906112bd565b9050610f5c565b610f5984836112bd565b90505b949350505050565b6001600160a01b03841660009081526002602052604081205460ff16158015610f59575081610f938486611514565b1195945050505050565b60028201546000901580159061077a5750600283018054610fc0906001906112bd565b81548110610fd057610fd0611291565b90600052602060002090600302016002015482109392505050565b600282018054829190611000906001906112bd565b8154811061101057611010611291565b906000526020600020906003020160000160008282546110309190611514565b9091555050815481908390600090611049908490611514565b90915550505050565b6040805160608101825282815260208101849052600654600092820190611082906001600160401b031686611514565b90526002808601805460018181018355600092835260208084208651600390940201928355850151908201556040840151920191909155855491925083918691906110ce908490611514565b909155505050505050565b80356001600160a01b03811681146110f057600080fd5b919050565b60006020828403121561110757600080fd5b61077a826110d9565b60008083601f84011261112257600080fd5b5081356001600160401b0381111561113957600080fd5b60208301915083602082850101111561115157600080fd5b9250929050565b6000806000806060858703121561116e57600080fd5b611177856110d9565b935060208501356001600160401b0381111561119257600080fd5b61119e87828801611110565b9598909750949560400135949350505050565b6000806000604084860312156111c657600080fd5b83356001600160401b038111156111dc57600080fd5b6111e886828701611110565b909790965060209590950135949350505050565b600060208083526080830184518285015281850151604081818701528087015191506060808188015283835180865260a0890191508685019550600094505b8085101561126c5785518051835287810151888401528401518483015294860194600194909401939082019061123b565b5098975050505050505050565b60006060828403121561128b57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156112cf576112cf6112a7565b500390565b600181815b8085111561130f5781600019048211156112f5576112f56112a7565b8085161561130257918102915b93841c93908002906112d9565b509250929050565b60008261132657506001610c74565b8161133357506000610c74565b816001811461134957600281146113535761136f565b6001915050610c74565b60ff841115611364576113646112a7565b50506001821b610c74565b5060208310610133831016604e8410600b8410161715611392575081810a610c74565b61139c83836112d4565b80600019048211156113b0576113b06112a7565b029392505050565b600061077a8383611317565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006114016040830185876113c4565b9050826020830152949350505050565b60006020828403121561142357600080fd5b5051919050565b60608152600061143e6060830186886113c4565b6020830194909452506040015292915050565b6001600160401b0381168114610af557600080fd5b60006020828403121561147857600080fd5b813561077a81611451565b81358155602082013560018201556002810160408301356114a381611451565b815467ffffffffffffffff19166001600160401b03919091161790555050565b602081526000610f5c6020830184866113c4565b6000602082840312156114e957600080fd5b8151801515811461077a57600080fd5b600060001982141561150d5761150d6112a7565b5060010190565b60008219821115611527576115276112a7565b50019056fea2646970667358221220f6bc29b1eaf024d6a92c84075e947401902d8bcef5c1efeaee15eeb82dce7e4e64736f6c634300080c0033608060405234801561001057600080fd5b506104b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630d3652ec1461005c57806322e01192146100845780632ef3accc146100995780637c661949146100ba578063c3825f4b146100d2575b600080fd5b61006f61006a3660046102b9565b6100fd565b60405190151581526020015b60405180910390f35b6100976100923660046102fb565b610129565b005b6100ac6100a73660046102fb565b610151565b60405190815260200161007b565b6100ac6100c8366004610363565b6000949350505050565b6100ac6100e03660046103bd565b805160208183018101805160008252928201919093012091525481565b600080838360405161011092919061046e565b9081526040519081900360200190205415159392505050565b806000848460405161013c92919061046e565b90815260405190819003602001902055505050565b600080848460405161016492919061046e565b908152602001604051809103902054600014156101d95760405162461bcd60e51b815260206004820152602860248201527f4d6f636b507269636541676772656761746f723a20746f6b656e206e6f7420736044820152671d5c1c1bdc9d195960c21b60648201526084015b60405180910390fd5b600082116102465760405162461bcd60e51b815260206004820152603460248201527f4d6f636b507269636541676772656761746f723a20616d6f756e74496e206d75604482015273073742062652067726561746572207468616e20360641b60648201526084016101d0565b6000848460405161025892919061046e565b90815260200160405180910390205490509392505050565b60008083601f84011261028257600080fd5b50813567ffffffffffffffff81111561029a57600080fd5b6020830191508360208285010111156102b257600080fd5b9250929050565b600080602083850312156102cc57600080fd5b823567ffffffffffffffff8111156102e357600080fd5b6102ef85828601610270565b90969095509350505050565b60008060006040848603121561031057600080fd5b833567ffffffffffffffff81111561032757600080fd5b61033386828701610270565b909790965060209590950135949350505050565b80356001600160a01b038116811461035e57600080fd5b919050565b6000806000806080858703121561037957600080fd5b61038285610347565b93506020850135925061039760408601610347565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103cf57600080fd5b813567ffffffffffffffff808211156103e757600080fd5b818401915084601f8301126103fb57600080fd5b81358181111561040d5761040d6103a7565b604051601f8201601f19908116603f01168101908382118183101715610435576104356103a7565b8160405282815287602084870101111561044e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b818382376000910190815291905056fea26469706673582212202b50c263451038e2acbc9ac93da2cdbe051d3f34af869cb84c5e8be3a881111064736f6c634300080c003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50546f74616c205553442076616c75652073686f756c64206e6f7420657863656564207468652072617465206c696d69740000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d52656d61696e696e6720616d6f756e742073686f756c64206265206e6f6e2d6e6567617469766552617465206c696d69742073686f756c64206e6f742062652065786365656465642077697468696e206475726174696f6e52617465206c696d69742073686f756c64206265207265736574206166746572206475726174696f6e20657870697279280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358352656d61696e696e6720616d6f756e742073686f756c64206265207a65726f207768656e206c696d697420697320657863656564656452617465206c696d69742073686f756c642062652065786365656465642077697468696e206475726174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d52617465206c696d69742073686f756c64206e6f74206265206578636565646564b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8a2646970667358221220cf744d10ed5e2d284de8460fa8fabf052a2b13732b410e0c12de624a099e966464736f6c634300080c0033","sourceMap":"241:15988:84:-:0;;;1572:26:20;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;503:3:84;478:28;;;;542:4;512:34;;598:26;;503:3;598:26;:::i;:::-;575:49;;655:14;;650:19;;:2;:19;:::i;:::-;630:39;;241:15988;;;;;;;;;;;;14:265:120;54:7;120:1;116;112:6;108:14;105:1;102:21;97:1;90:9;83:17;79:45;76:168;;;166:10;161:3;157:20;154:1;147:31;201:4;198:1;191:15;229:4;226:1;219:15;76:168;-1:-1:-1;264:9:120;;14:265::o;:::-;241:15988:84;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620002315760003560e01c80639ee2bd251162000131578063cd4935b111620000bb578063f142f01b1162000086578063f142f01b14620003d5578063f4b6c4de14620003ec578063f791d2c31462000403578063f9ae83a2146200040d578063fa7626d4146200041757600080fd5b8063cd4935b114620003a0578063cdb1428f14620003b7578063d6f393b914620003c1578063e20c9f7114620003cb57600080fd5b8063ba414fa611620000fc578063ba414fa61462000367578063c854ce451462000382578063c9fd3708146200038c578063cd400285146200039657600080fd5b80639ee2bd251462000332578063b0c036e31462000349578063b5508aa91462000353578063b9e3868e146200035d57600080fd5b80633e5e3c2311620001bf57806366d9a9a0116200018a57806366d9a9a014620002e25780636ea407ff14620002fb5780637cf16910146200030557806385226c81146200030f578063916a17c6146200032857600080fd5b80633e5e3c2314620002ad5780633f7286f414620002b75780634726a1f214620002c157806362d80dbc14620002cb57600080fd5b806317fec1e4116200020057806317fec1e414620002605780631ed7831c146200027757806329a5809a14620002995780632a88873514620002a357600080fd5b80630a9254e414620002365780630b718d1414620002425780630f78dfbb146200024c578063161515521462000256575b600080fd5b6200024062000425565b005b62000240620005d7565b620002406200092d565b6200024062000bfc565b620002406200027136600462004d41565b62000fa1565b62000281620011c9565b60405162000290919062004d70565b60405180910390f35b620002406200122d565b6200024062001474565b62000281620015b7565b6200028162001619565b620002406200167b565b62000240620002dc36600462004dbf565b62001862565b620002ec62001a1d565b60405162000290919062004dd9565b6200024062001b10565b6200024062001ba5565b6200031962001c37565b60405162000290919062004eed565b620002ec62001d11565b620002406200034336600462004f53565b62001dfb565b6200024062002321565b62000319620023b3565b620002406200248d565b620003716200258a565b604051901515815260200162000290565b62000240620026b5565b6200024062002bf7565b6200024062002d7b565b62000240620003b136600462004f88565b620030c5565b620002406200343c565b6200024062003704565b62000281620037b9565b62000240620003e636600462004fdf565b6200381b565b62000240620003fd3660046200501b565b62003944565b6200024062003c13565b6200024062003e58565b600054620003719060ff1681565b6040805180820190915260038082526208aa8960eb1b60209092019182526200045191601b9162004c69565b50602554601c55604051620004669062004cf8565b604051809103906000f08015801562000483573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b039290921691909117905560408051606081018252602454808252600a60208084018290526005938501849052601e92909255601f55805467ffffffffffffffff1916909117905551620004ed9062004d06565b604051809103906000f0801580156200050a573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055601c5460405163117008c960e11b81526322e01192916200055291601b919060040162005136565b600060405180830381600087803b1580156200056d57600080fd5b505af115801562000582573d6000803e3d6000fd5b50506021546200059e92506001600160a01b0316905062003f8d565b60408051606081018252601e548152601f54602080830191909152546001600160401b031691810191909152620005d59062003feb565b565b600360056000620005e9838062005170565b602154604051630bbceb3360e21b81526001600160401b039290921692506000916001600160a01b0390911690632ef3accc906200063890601b9068056bc75e2d631000009060040162005136565b602060405180830381865afa15801562000656573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067c9190620051a2565b601d54604080516060810182526024548152602081018790526001600160401b0388168183015290516336bd0b5b60e21b81529293506001600160a01b039091169163daf42d6c91620006d291600401620051bc565b600060405180830381600087803b158015620006ed57600080fd5b505af115801562000702573d6000803e3d6000fd5b5050505060005b828110156200080d576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b1580156200075b57600080fd5b505af115801562000770573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f49150620007b190601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af1158015620007d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007f79190620051f7565b5080620008048162005215565b91505062000709565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562000858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008829190810190620052a7565b905060006200089b6001600160401b03871686620053e3565b620008b06001600160401b03881686620053fa565b620008bc919062005411565b9050600081836040015151620008d3919062005411565b905060006200090385620008f16001600160401b038b16856200542b565b620008fd91906200542b565b62004173565b90506200091584602001518462004196565b835162000923908262004196565b5050505050505050565b602154604051630bbceb3360e21b8152600a916003916000916001600160a01b031690632ef3accc906200096a90601b9060649060040162005136565b602060405180830381865afa15801562000988573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009ae9190620051a2565b601d54604080516060810182526024548152600a602082015260648183015290516336bd0b5b60e21b81529293506001600160a01b039091169163daf42d6c91620009fc91600401620051bc565b600060405180830381600087803b15801562000a1757600080fd5b505af115801562000a2c573d6000803e3d6000fd5b5050505060005b8381101562000b59576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b15801562000a8557600080fd5b505af115801562000a9a573d6000803e3d6000fd5b5050505060005b8381101562000b4357601d546040516317a270fd60e21b81526001600160a01b0390911690635e89c3f49062000ae790601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562000b07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b2d9190620051f7565b508062000b3a8162005215565b91505062000aa1565b508062000b508162005215565b91505062000a33565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562000ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bce9190810190620052a7565b9050600062000be383620008f187876200542b565b905062000bf582600001518262004196565b5050505050565b601d5460408051606081018252602454815260056020820181905260018284015291516336bd0b5b60e21b815291926003926001600160a01b039091169163daf42d6c9162000c4f9190600401620051bc565b600060405180830381600087803b15801562000c6a57600080fd5b505af115801562000c7f573d6000803e3d6000fd5b5050505060005b8181101562000d8a576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b15801562000cd857600080fd5b505af115801562000ced573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062000d2e90601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562000d4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d749190620051f7565b508062000d818162005215565b91505062000c86565b50600080516020620072cd833981519152631f7b4f3062000dad8460056200542b565b6040518263ffffffff1660e01b815260040162000dcc91815260200190565b600060405180830381600087803b15801562000de757600080fd5b505af115801562000dfc573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062000e3d90601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562000e5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e839190620051f7565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562000ece573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ef89190810190620052a7565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062000f3c90601b9068056bc75e2d631000009060040162005136565b602060405180830381865afa15801562000f5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f809190620051a2565b9050600062000f8f8262004173565b905062000bf583600001518262004196565b62000fb881600168056bc75e2d631000006200425a565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062000ff490601b9060649060040162005136565b602060405180830381865afa15801562001012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010389190620051a2565b90506000670de0b6b3a76400006200105183856200542b565b6200105d9190620053fa565b601d54604051630598b62160e31b815291925060009182916001600160a01b031690632cc5b108906200109a908990601b908a906004016200544d565b6040805180830381865afa158015620010b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010dd919062005483565b91509150602454831162001159576200112c826040518060400160405280601c81526020017f4c696d69742073686f756c64206e6f7420626520657863656564656400000000815250620042a2565b62001153816000604051806060016040528060278152602001620072ed60279139620042af565b620011c1565b6200119a826040518060400160405280601881526020017f4c696d69742073686f756c642062652065786365656465640000000000000000815250620042ec565b620011c1816000604051806060016040528060368152602001620073956036913962004325565b505050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200122357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001204575b5050505050905090565b601d5460408051632a32a25960e21b815290516000926001600160a01b03169163a8ca89649160048083019260609291908290030181865afa15801562001278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129e9190620054b2565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90620012da90601b9060649060040162005136565b602060405180830381865afa158015620012f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200131e9190620051a2565b601d54604051630598b62160e31b8152919250670de0b6b3a7640000916000916001600160a01b031690632cc5b1089062001363903390601b9087906004016200544d565b6040805180830381865afa15801562001380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013a6919062005483565b509050620013b681600062004361565b8351600090620013c8908590620053fa565b620013d590600162005519565b620013e990670de0b6b3a76400006200542b565b601d54604051630598b62160e31b81529192506001600160a01b031690632cc5b1089062001421903390601b9086906004016200544d565b6040805180830381865afa1580156200143e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001464919062005483565b50915062000bf582600162004361565b6000604051620014849062004d06565b604051809103906000f080158015620014a1573d6000803e3d6000fd5b506040805180820182526004808252635742544360e01b6020830152915163117008c960e11b8152929350916101a4916001600160a01b038516916322e0119291620014f291869186910162005534565b600060405180830381600087803b1580156200150d57600080fd5b505af115801562001522573d6000803e3d6000fd5b50505050620015318362003f8d565b604051630bbceb3360e21b8152620015b2906001600160a01b03851690632ef3accc906200156790869060649060040162005534565b602060405180830381865afa15801562001585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ab9190620051a2565b8262004196565b505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001223576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001204575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001223576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001204575050505050905090565b601d5460405163ed5f43b760e01b8152306004820152620016f4916001600160a01b03169063ed5f43b7906024015b602060405180830381865afa158015620016c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016ee9190620051f7565b620044a5565b601d5460405163286df6b760e01b81523060048201526001600160a01b039091169063286df6b790602401600060405180830381600087803b1580156200173a57600080fd5b505af11580156200174f573d6000803e3d6000fd5b5050601d5460405163ed5f43b760e01b8152306004820152620017cd93506001600160a01b03909116915063ed5f43b790602401602060405180830381865afa158015620017a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017c79190620051f7565b620044ac565b601d54604051636306032360e11b81523060048201526001600160a01b039091169063c60c064690602401600060405180830381600087803b1580156200181357600080fd5b505af115801562001828573d6000803e3d6000fd5b5050601d5460405163ed5f43b760e01b8152306004820152620005d593506001600160a01b03909116915063ed5f43b790602401620016aa565b6200187981600168056bc75e2d631000006200425a565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90620018b590601b9060649060040162005136565b602060405180830381865afa158015620018d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018f99190620051a2565b90506000670de0b6b3a76400006200191283856200542b565b6200191e9190620053fa565b601d546040516317a270fd60e21b81529192506000916001600160a01b0390911690635e89c3f4906200195990601b90889060040162005136565b6020604051808303816000875af115801562001979573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200199f9190620051f7565b90506024548211620019d657620019d0816040518060600160405280602181526020016200741860219139620042ec565b62001a17565b62001a17816040518060400160405280601d81526020017f52617465206c696d69742073686f756c64206265206578636565646564000000815250620042a2565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001b075760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001aee57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001aaf5790505b5050505050815250508152602001906001019062001a41565b50505050905090565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001b5e57600080fd5b505af115801562001b73573d6000803e3d6000fd5b5050604080516060810182526000815260016020820152600491810191909152915062001ba290508162003feb565b50565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001bf357600080fd5b505af115801562001c08573d6000803e3d6000fd5b5050604080516060810182526005815260006020820152600491810191909152915062001ba290508162003feb565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001b0757838290600052602060002001805462001c7d9062005051565b80601f016020809104026020016040519081016040528092919081815260200182805462001cab9062005051565b801562001cfc5780601f1062001cd05761010080835404028352916020019162001cfc565b820191906000526020600020905b81548152906001019060200180831162001cde57829003601f168201915b50505050508152602001906001019062001c5b565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001b075760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001de257602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001da35790505b5050505050815250508152602001906001019062001d35565b62001e0a82600160326200425a565b915062001e22816001670de0b6b3a76400006200425a565b9050600062001e536040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062001e8f90601b9060649060040162005136565b602060405180830381865afa15801562001ead573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ed39190620051a2565b90506000670de0b6b3a764000062001eec83866200542b565b62001ef89190620053fa565b601d5460408051606081018252602454815260056020820181905260018284015291516336bd0b5b60e21b815293945090926001600160a01b039092169163daf42d6c9162001f4a91600401620051bc565b600060405180830381600087803b15801562001f6557600080fd5b505af115801562001f7a573d6000803e3d6000fd5b5050505060005b86811015620021745760405163ca669fa760e01b81526001600160a01b0386166004820152600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562001fdb57600080fd5b505af115801562001ff0573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b8152600093506001600160a01b039091169150635e89c3f4906200202c90601b908b9060040162005136565b6020604051808303816000875af11580156200204c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020729190620051f7565b602454909150846200208684600162005519565b6200209291906200542b565b11620020c357620020bd816040518060600160405280603181526020016200731460319139620042ec565b620020e8565b620020e8816040518060600160405280602d8152602001620073cb602d9139620042a2565b600080516020620072cd833981519152631f7b4f306200210a43600162005519565b6040518263ffffffff1660e01b81526004016200212991815260200190565b600060405180830381600087803b1580156200214457600080fd5b505af115801562002159573d6000803e3d6000fd5b505050505080806200216b9062005215565b91505062001f81565b50600080516020620072cd833981519152631f7b4f3062002196834362005519565b620021a390600162005519565b6040518263ffffffff1660e01b8152600401620021c291815260200190565b600060405180830381600087803b158015620021dd57600080fd5b505af1158015620021f2573d6000803e3d6000fd5b505060405163ca669fa760e01b81526001600160a01b0387166004820152600080516020620072cd833981519152925063ca669fa79150602401600060405180830381600087803b1580156200224757600080fd5b505af11580156200225c573d6000803e3d6000fd5b5050601d54602454600093506001600160a01b039091169150635e89c3f490601b906200228c9060019062005411565b6040518363ffffffff1660e01b8152600401620022ab92919062005136565b6020604051808303816000875af1158015620022cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022f19190620051f7565b905062002318816040518060600160405280603081526020016200734560309139620042ec565b50505050505050565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200236f57600080fd5b505af115801562002384573d6000803e3d6000fd5b5050604080516060810182526005815260016020820152600091810191909152915062001ba290508162003feb565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001b07578382906000526020600020018054620023f99062005051565b80601f0160208091040260200160405190810160405280929190818152602001828054620024279062005051565b8015620024785780601f106200244c5761010080835404028352916020019162002478565b820191906000526020600020905b8154815290600101906020018083116200245a57829003601f168201915b505050505081526020019060010190620023d7565b600080516020620073f883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024db57600080fd5b505af1158015620024f0573d6000803e3d6000fd5b5050601d54604051630598b62160e31b81523360048083019190915260606024830152606482015263444f474560e01b6084820152600260448201526001600160a01b039091169250632cc5b108915060a4016040805180830381865afa15801562002560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002586919062005483565b5050565b60008054610100900460ff1615620025ab5750600054610100900460ff1690565b6000600080516020620072cd8339815191523b15620026b05760408051600080516020620072cd833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002632917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162005549565b60408051601f19818403018152908290526200264e916200557c565b6000604051808303816000865af19150503d80600081146200268d576040519150601f19603f3d011682016040523d82523d6000602084013e62002692565b606091505b5091505080806020019051810190620026ac9190620051f7565b9150505b919050565b602154604051630bbceb3360e21b81526003916000916001600160a01b0390911690632ef3accc90620026f190601b9060649060040162005136565b602060405180830381865afa1580156200270f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027359190620051a2565b9050600660036000620027526001600160401b03861684620053fa565b601d54604080516060810182526024548152600a60208201526001600160401b0389168183015290516336bd0b5b60e21b81529293506001600160a01b039091169163daf42d6c91620027a891600401620051bc565b600060405180830381600087803b158015620027c357600080fd5b505af1158015620027d8573d6000803e3d6000fd5b5060009250829150505b8481101562002909576040516301f7b4f360e41b815260048101829052600080516020620072cd83398151915290631f7b4f3090602401600060405180830381600087803b1580156200283457600080fd5b505af115801562002849573d6000803e3d6000fd5b5050505060005b84811015620028f357601d546040516317a270fd60e21b81526001600160a01b0390911690635e89c3f4906200289690601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af1158015620028b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028dc9190620051f7565b925080620028ea8162005215565b91505062002850565b5080620029008162005215565b915050620027e2565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa15801562002954573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200297e9190810190620052a7565b905060006200299387620008f188886200542b565b9050620029a582600001518262004196565b620029b68260400151518562004196565b620029c78260200151600062004196565b601d546040805160608101825260245481526001602082018190528183015290516336bd0b5b60e21b81526001600160a01b039092169163daf42d6c9162002a1291600401620051bc565b600060405180830381600087803b15801562002a2d57600080fd5b505af115801562002a42573d6000803e3d6000fd5b50600080516020620072cd8339815191529250631f7b4f30915062002a6b905088600162005519565b6040518263ffffffff1660e01b815260040162002a8a91815260200190565b600060405180830381600087803b15801562002aa557600080fd5b505af115801562002aba573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062002afb90601b90670de0b6b3a76400009060040162005136565b6020604051808303816000875af115801562002b1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b419190620051f7565b601d54604051631c04ac7560e21b81523060048201529194506001600160a01b031690637012b1d490602401600060405180830381865afa15801562002b8b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002bb59190810190620052a7565b915062002bc28762004173565b905062002bd482600001518262004196565b620009238260200151600184604001515162002bf1919062005411565b62004196565b601d60009054906101000a90046001600160a01b03166001600160a01b031663b74437a56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002c4857600080fd5b505af115801562002c5d573d6000803e3d6000fd5b5050505062002cb9601d60009054906101000a90046001600160a01b03166001600160a01b0316632f53036e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016c8573d6000803e3d6000fd5b601d60009054906101000a90046001600160a01b03166001600160a01b031663c47f1ac36040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002d0a57600080fd5b505af115801562002d1f573d6000803e3d6000fd5b50505050620005d5601d60009054906101000a90046001600160a01b03166001600160a01b0316632f53036e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017a1573d6000803e3d6000fd5b600062002daa6040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062002de690601b9060649060040162005136565b602060405180830381865afa15801562002e04573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e2a9190620051a2565b60405163ca669fa760e01b81526001600160a01b0384166004820152909150670de0b6b3a764000090600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562002e8857600080fd5b505af115801562002e9d573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062002ed690601b90859060040162005136565b6020604051808303816000875af115801562002ef6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f1c9190620051f7565b5060405163ca669fa760e01b81526001600160a01b0384166004820152600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562002f6e57600080fd5b505af115801562002f83573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062002fbc90601b90859060040162005136565b6020604051808303816000875af115801562002fdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030029190620051f7565b50601d54604051630598b62160e31b815260009182916001600160a01b0390911690632cc5b108906200303f908890601b9088906004016200544d565b6040805180830381865afa1580156200305c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003082919062005483565b915091506200309382600062004361565b6000620030b7620030a68660036200542b565b620008fd9064e8d4a5100062005411565b9050620011c1828262004196565b620030d78360ff16600160326200425a565b9250620030f58266038d7ea4c68000670de0b6b3a76400006200425a565b9150620031098160ff166001600a6200425a565b602154604051630bbceb3360e21b815291925060009182916001600160a01b031690632ef3accc906200314590601b9060649060040162005136565b602060405180830381865afa15801562003163573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031899190620051a2565b905060005b8560ff168160ff1610156200338f576000620031b560ff831666038d7ea4c680006200559a565b620031ca9066ffffffffffffff168762005519565b90506000670de0b6b3a7640000620031e385846200542b565b620031ef9190620053fa565b9050620031fd818662005519565b601d546040516317a270fd60e21b81529196506000916001600160a01b0390911690635e89c3f4906200323890601b90879060040162005136565b6020604051808303816000875af115801562003258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327e9190620051f7565b90506024548611620032b557620032af816040518060600160405280602181526020016200741860219139620042ec565b620032ff565b620032f6816040518060400160405280601d81526020017f52617465206c696d69742073686f756c64206265206578636565646564000000815250620042a2565b5050506200338f565b600080516020620072cd833981519152631f7b4f306200332360ff8a164362005519565b6040518263ffffffff1660e01b81526004016200334291815260200190565b600060405180830381600087803b1580156200335d57600080fd5b505af115801562003372573d6000803e3d6000fd5b5050505050505080806200338690620055c3565b9150506200318e565b50601d54604051631c04ac7560e21b81523060048201526000916001600160a01b031690637012b1d490602401600060405180830381865afa158015620033da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034049190810190620052a7565b9050620011c181600001516200341c60245462004173565b6040518060600160405280603081526020016200729d6030913962004527565b60006200346b6040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90620034a790601b9060649060040162005136565b602060405180830381865afa158015620034c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034eb9190620051a2565b9050600081601d60009054906101000a90046001600160a01b03166001600160a01b031663a8ca89646040518163ffffffff1660e01b8152600401606060405180830381865afa15801562003544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200356a9190620054b2565b51620035779190620053fa565b6200358b90670de0b6b3a76400006200542b565b60405163ca669fa760e01b81526001600160a01b0385166004820152909150600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b158015620035df57600080fd5b505af1158015620035f4573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f491506200362d90601b90859060040162005136565b6020604051808303816000875af11580156200364d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036739190620051f7565b50601d54604051630598b62160e31b815260009182916001600160a01b0390911690632cc5b10890620036b0908890601b9088906004016200544d565b6040805180830381865afa158015620036cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f3919062005483565b9150915062000bf582600162004361565b6000604051620037149062004d06565b604051809103906000f08015801562003731573d6000803e3d6000fd5b5090506200373f8162003f8d565b601d5460408051632630c12f60e01b8152905162001ba2926001600160a01b031691632630c12f9160048083019260209291908290030181865afa1580156200378c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037b29190620055e6565b8262004564565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001223576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001204575050505050905090565b6200382b8360016103e86200425a565b92506200384282620f424064e8d4a510006200425a565b91506200385c816001600160401b0316600160646200425a565b905060006040518060600160405280848152602001858152602001836001600160401b03168152509050620038918162003feb565b601d5460408051632a32a25960e21b815290516000926001600160a01b03169163a8ca89649160048083019260609291908290030181865afa158015620038dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039029190620054b2565b90506200391481602001518662004196565b805162003922908562004196565b62000bf581604001516001600160401b0316846001600160401b031662004196565b620039568360ff16600160326200425a565b92506200396c82620f42406305f5e1006200425a565b91506200398a8166038d7ea4c68000670de0b6b3a76400006200425a565b905060005b8360ff168160ff16101562001a17576000620039b260ff8316620186a062005606565b620039c39062ffffff168562005519565b90506000620039dd60ff841666038d7ea4c680006200559a565b620039f29066ffffffffffffff168562005519565b60215460405163117008c960e11b81529192506001600160a01b0316906322e011929062003a2890601b90869060040162005136565b600060405180830381600087803b15801562003a4357600080fd5b505af115801562003a58573d6000803e3d6000fd5b505050506000670de0b6b3a7640000838362003a7591906200542b565b62003a819190620053fa565b601d546040516317a270fd60e21b81529192506000916001600160a01b0390911690635e89c3f49062003abc90601b90879060040162005136565b6020604051808303816000875af115801562003adc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b029190620051f7565b9050602454821162003b395762003b33816040518060600160405280602181526020016200741860219139620042ec565b62003b84565b62003b7a816040518060400160405280601d81526020017f52617465206c696d69742073686f756c64206265206578636565646564000000815250620042a2565b5050505062001a17565b600080516020620072cd833981519152631f7b4f3062003ba643600162005519565b6040518263ffffffff1660e01b815260040162003bc591815260200190565b600060405180830381600087803b15801562003be057600080fd5b505af115801562003bf5573d6000803e3d6000fd5b5050505050505050808062003c0a90620055c3565b9150506200398f565b600062003c426040518060400160405280600a8152602001693a32b9ba29b2b73232b960b11b81525062004513565b602154604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc9062003c7e90601b9060649060040162005136565b602060405180830381865afa15801562003c9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cc29190620051a2565b60405163ca669fa760e01b81526001600160a01b0384166004820152909150670de0b6b3a764000090600080516020620072cd8339815191529063ca669fa790602401600060405180830381600087803b15801562003d2057600080fd5b505af115801562003d35573d6000803e3d6000fd5b5050601d546040516317a270fd60e21b81526001600160a01b039091169250635e89c3f4915062003d6e90601b90859060040162005136565b6020604051808303816000875af115801562003d8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003db49190620051f7565b50601d54604051630598b62160e31b815260009182916001600160a01b0390911690632cc5b1089062003df1908890601b9088906004016200544d565b6040805180830381865afa15801562003e0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e34919062005483565b9150915062003e4582600062004361565b6000620030b7620030a68660026200542b565b60408051606081018252621e84808152600a602082015260039181019190915262003e838162003feb565b601d5460408051632a32a25960e21b815290516000926001600160a01b03169163a8ca89649160048083019260609291908290030181865afa15801562003ece573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ef49190620054b2565b905062003f0a8160200151836020015162004196565b8051825162003f1a919062004196565b62003f4081604001516001600160401b031683604001516001600160401b031662004196565b601d54604080516317a981b760e11b8152905162002586926001600160a01b031691632f53036e9160048083019260209291908290030181865afa158015620017a1573d6000803e3d6000fd5b601d5460405163530e784f60e01b81526001600160a01b0383811660048301529091169063530e784f906024015b600060405180830381600087803b15801562003fd657600080fd5b505af115801562000bf5573d6000803e3d6000fd5b60008160200151116200405e5760405162461bcd60e51b815260206004820152603060248201527f526174654c696d69746572546573743a206475726174696f6e206d757374206260448201526f0652067726561746572207468616e20360841b60648201526084015b60405180910390fd5b8051620040c85760405162461bcd60e51b815260206004820152603160248201527f526174654c696d69746572546573743a206d6178416d6f756e74206d75737420604482015270062652067726561746572207468616e203607c1b606482015260840162004055565b600081604001516001600160401b031611620041415760405162461bcd60e51b815260206004820152603160248201527f526174654c696d69746572546573743a20626174636853697a65206d75737420604482015270062652067726561746572207468616e203607c1b606482015260840162004055565b601d546040516336bd0b5b60e21b81526001600160a01b039091169063daf42d6c9062003fbb908490600401620051bc565b600062004190602354602254846200464d9092919063ffffffff16565b92915050565b80821462002586576000805160206200727d833981519152604051620041f89060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160008051602062007439833981519152826040516200422091906200562b565b60405180910390a1600080516020620074398339815191528160405162004248919062005664565b60405180910390a1620025866200466c565b60006200426984848462004775565b90506200429b6040518060400160405280600c81526020016b109bdd5b990814995cdd5b1d60a21b8152508262004962565b9392505050565b62002586821582620042ec565b81831015620015b2576000805160206200737583398151915281604051620042d891906200568f565b60405180910390a1620015b2838362004a02565b81620025865760008051602062007375833981519152816040516200431291906200568f565b60405180910390a16200258682620044ac565b818314620015b25760008051602062007375833981519152816040516200434d91906200568f565b60405180910390a1620015b2838362004196565b8015158215151462002586576000805160206200727d833981519152604051620043c79060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f6040820152616c5d60f01b606082015260800190565b60405180910390a1600080516020620073758339815191528262004409576040518060400160405280600581526020016466616c736560d81b81525062004427565b604051806040016040528060048152602001637472756560e01b8152505b604051620044369190620056c0565b60405180910390a1600080516020620073758339815191528162004478576040518060400160405280600581526020016466616c736560d81b81525062004496565b604051806040016040528060048152602001637472756560e01b8152505b60405162004248919062005707565b62001ba281155b8062001ba2576000805160206200727d833981519152604051620045019060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001ba26200466c565b6000620045208262004af1565b5092915050565b81831115620015b25760008051602062007375833981519152816040516200455091906200568f565b60405180910390a1620015b2838362004c06565b806001600160a01b0316826001600160a01b03161462002586576000805160206200727d833981519152604051620045db9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004614919062005732565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162004248919062005777565b60008260001904841183021582026200466557600080fd5b5091020490565b600080516020620072cd8339815191523b15620047645760408051600080516020620072cd833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620046ff929160200162005549565b60408051601f19818403018152908290526200471b916200557c565b6000604051808303816000865af19150503d80600081146200475a576040519150601f19603f3d011682016040523d82523d6000602084013e6200475f565b606091505b505050505b6000805461ff001916610100179055565b600081831115620047ef5760405162461bcd60e51b815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840162004055565b828410158015620048005750818411155b156200480e5750826200429b565b60006200481c848462005411565b6200482990600162005519565b9050600385111580156200483c57508481115b1562004857576200484e858562005519565b9150506200429b565b62004866600360001962005411565b85101580156200488257506200487f8560001962005411565b81115b15620048a257620048968560001962005411565b6200484e908462005411565b8285111562004901576000620048b9848762005411565b90506000620048c98383620053e3565b905080620048dd578493505050506200429b565b6001620048eb828862005519565b620048f7919062005411565b935050506200495a565b838510156200495a57600062004918868662005411565b90506000620049288383620053e3565b9050806200493c578593505050506200429b565b62004948818662005411565b6200495590600162005519565b935050505b509392505050565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024016200498e92919062005534565b60408051601f198184030181529181526020820180516001600160e01b0316632d839cb360e21b17905251620049c591906200557c565b600060405180830381855afa9150503d8060008114620011c1576040519150601f19603f3d011682016040523d82523d6000602084013e620011c1565b8082101562002586576000805160206200727d83398151915260405162004a659060208082526022908201527f4572726f723a2061203e3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a16040805181815260098183015268202056616c7565206160b81b6060820152602081018490529051600080516020620074398339815191529181900360800190a1604080518181526009918101919091526810102b30b63ab2903160b91b606082015260208101829052600080516020620074398339815191529060800162004248565b6000808260405160200162004b0791906200557c565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150600080516020620072cd8339815191529063ffa1864990602401602060405180830381865afa15801562004b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b949190620055e6565b6040516318caf8e360e31b8152909250600080516020620072cd8339815191529063c657c7189062004bcd9085908790600401620057a2565b600060405180830381600087803b15801562004be857600080fd5b505af115801562004bfd573d6000803e3d6000fd5b50505050915091565b8082111562002586576000805160206200727d83398151915260405162004a659060208082526022908201527f4572726f723a2061203c3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b82805462004c779062005051565b90600052602060002090601f01602090048101928262004c9b576000855562004ce6565b82601f1062004cb657805160ff191683800117855562004ce6565b8280016001018555821562004ce6579182015b8281111562004ce657825182559160200191906001019062004cc9565b5062004cf492915062004d14565b5090565b6115e080620057c983390190565b6104d48062006da983390190565b5b8082111562004cf4576000815560010162004d15565b6001600160a01b038116811462001ba257600080fd5b6000806040838503121562004d5557600080fd5b823562004d628162004d2b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b8181101562004db35783516001600160a01b03168352928401929184019160010162004d8c565b50909695505050505050565b60006020828403121562004dd257600080fd5b5035919050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562004e8157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562004e6b5783516001600160e01b0319168252928b019260019290920191908b019062004e3f565b50978a0197955050509187019160010162004e01565b50919998505050505050505050565b60005b8381101562004ead57818101518382015260200162004e93565b8381111562001a175750506000910152565b6000815180845262004ed981602086016020860162004e90565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562004f4657603f1988860301845262004f3385835162004ebf565b9450928501929085019060010162004f14565b5092979650505050505050565b6000806040838503121562004f6757600080fd5b50508035926020909101359150565b803560ff81168114620026b057600080fd5b60008060006060848603121562004f9e57600080fd5b62004fa98462004f76565b92506020840135915062004fc06040850162004f76565b90509250925092565b6001600160401b038116811462001ba257600080fd5b60008060006060848603121562004ff557600080fd5b83359250602084013591506040840135620050108162004fc9565b809150509250925092565b6000806000606084860312156200503157600080fd5b6200503c8462004f76565b95602085013595506040909401359392505050565b600181811c908216806200506657607f821691505b602082108114156200508857634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c9080831680620050a957607f831692505b6020808410821415620050cc57634e487b7160e01b600052602260045260246000fd5b83885260208801828015620050ea5760018114620050fc5762005129565b60ff1987168252828201975062005129565b60008981526020902060005b87811015620051235781548482015290860190840162005108565b83019850505b5050505050505092915050565b6040815260006200514b60408301856200508e565b90508260208301529392505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516818304811182151516156200519957620051996200515a565b02949350505050565b600060208284031215620051b557600080fd5b5051919050565b81518152602080830151908201526040918201516001600160401b03169181019190915260600190565b80518015158114620026b057600080fd5b6000602082840312156200520a57600080fd5b6200429b82620051e6565b60006000198214156200522c576200522c6200515a565b5060010190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200526e576200526e62005233565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200529f576200529f62005233565b604052919050565b60006020808385031215620052bb57600080fd5b82516001600160401b0380821115620052d357600080fd5b81850191506060808388031215620052ea57600080fd5b620052f462005249565b835181528484015185820152604080850151848111156200531457600080fd5b80860195505088601f8601126200532a57600080fd5b8451848111156200533f576200533f62005233565b6200534f878260051b0162005274565b818152878101955090840286018701908a8211156200536d57600080fd5b958701955b81871015620053ba5784878c0312156200538c5760008081fd5b6200539662005249565b87518152888801518982015283880151848201528652958401959487019462005372565b9183019190915250979650505050505050565b634e487b7160e01b600052601260045260246000fd5b600082620053f557620053f5620053cd565b500690565b6000826200540c576200540c620053cd565b500490565b6000828210156200542657620054266200515a565b500390565b60008160001904831182151516156200544857620054486200515a565b500290565b6001600160a01b038416815260606020820181905260009062005473908301856200508e565b9050826040830152949350505050565b600080604083850312156200549757600080fd5b620054a283620051e6565b9150602083015190509250929050565b600060608284031215620054c557600080fd5b604051606081018181106001600160401b0382111715620054ea57620054ea62005233565b8060405250825181526020830151602082015260408301516200550d8162004fc9565b60408201529392505050565b600082198211156200552f576200552f6200515a565b500190565b6040815260006200514b604083018562004ebf565b6001600160e01b03198316815281516000906200556e81600485016020870162004e90565b919091016004019392505050565b600082516200559081846020870162004e90565b9190910192915050565b600066ffffffffffffff808316818516818304811182151516156200519957620051996200515a565b600060ff821660ff811415620055dd57620055dd6200515a565b60010192915050565b600060208284031215620055f957600080fd5b81516200429b8162004d2b565b600062ffffff808316818516818304811182151516156200519957620051996200515a565b6040815260006200565660408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200565660408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201526422b93937b960d91b60608201526080602082015260006200429b608083018462004ebf565b604081526000620056eb60408301600a8152690808080808081319599d60b21b602082015260400190565b8281036020840152620056ff818562004ebf565b949350505050565b604081526000620056eb60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200575d60408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006200575d60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6001600160a01b0383168152604060208201819052600090620056ff9083018462004ebf56fe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6115628061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637012b1d4116100ad578063c47f1ac311610071578063c47f1ac3146102f5578063c60c0646146102fd578063daf42d6c14610310578063ed5f43b714610323578063f2fde38b1461034657600080fd5b80637012b1d414610281578063715018a6146102a15780638da5cb5b146102a9578063a8ca8964146102ba578063b74437a5146102ed57600080fd5b80632cc5b108116100f45780632cc5b108146101d55780632e6c02e3146101ff5780632f53036e1461023e578063530e784f1461025b5780635e89c3f41461026e57600080fd5b80630a6d4d5814610126578063112f6a31146101675780632630c12f14610195578063286df6b7146101c0575b600080fd5b61014d6101343660046110f5565b6001602081905260009182526040909120805491015482565b604080519283526020830191909152015b60405180910390f35b61017a6101753660046110f5565b610359565b6040805193845260208401929092529082015260600161015e565b6007546101a8906001600160a01b031681565b6040516001600160a01b03909116815260200161015e565b6101d36101ce3660046110f5565b61044d565b005b6101e86101e3366004611158565b610479565b60408051921515835260208301919091520161015e565b60045460055460065461021a9291906001600160401b031683565b6040805193845260208401929092526001600160401b03169082015260600161015e565b60035461024b9060ff1681565b604051901515815260200161015e565b6101d36102693660046110f5565b610579565b61024b61027c3660046111b1565b6105a3565b61029461028f3660046110f5565b610781565b60405161015e91906111fc565b6101d3610855565b6000546001600160a01b03166101a8565b6102c2610869565b604080518251815260208084015190820152918101516001600160401b03169082015260600161015e565b6101d36108c4565b6101d36108d8565b6101d361030b3660046110f5565b6108ef565b6101d361031e366004611279565b610918565b61024b6103313660046110f5565b60026020526000908152604090205460ff1681565b6101d36103543660046110f5565b610a7f565b6001600160a01b0381166000908152600160208181526040808420815160608101835281548152938101548484015260028101805483518186028101860185528181528796879687969195949186019390879084015b828210156103ff57838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906103af565b505050508152505090506000816040015182602001518151811061042557610425611291565b6020026020010151905080600001518160200151826040015194509450945050509193909250565b610455610af8565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080806104a261048c600660126112bd565b61049790600a6113b8565b8590620f4240610b52565b600754604051630bbceb3360e21b815291925060009161052f916001600160a01b031690632ef3accc906104de908b908b908b906004016113ed565b602060405180830381865afa1580156104fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051f9190611411565b8390670de0b6b3a7640000610b52565b9050600061055a610542600660126112bd565b61054d90600a6113b8565b60045490620f4240610b52565b90506105698989898585610b70565b9450945050505094509492505050565b610581610af8565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806105cb6105b5600660126112bd565b6105c090600a6113b8565b8490620f4240610b52565b600754604051630bbceb3360e21b81529192506000916001600160a01b0390911690632ef3accc90610605908990899089906004016113ed565b602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190611411565b600754604051630bbceb3360e21b81529192506000916106d3916001600160a01b031690632ef3accc90610682908b908b908b906004016113ed565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c39190611411565b8490670de0b6b3a7640000610b52565b905060006106e6610542600660126112bd565b905060006106f7338a8a8686610b70565b509050801561074f5760045460405133917fe2274a8e4f5712295a052754df3513686fd79e6fe1e6dbdd609b8b0b1fbc133c91610739918d918d918d9161142a565b60405180910390a260009550505050505061077a565b600061075a43610c53565b905061076581610c7a565b61076f4385610d26565b600196505050505050505b9392505050565b6107a560405180606001604052806000815260200160008152602001606081525090565b6001600160a01b03821660009081526001602081815260408084208151606081018352815481529381015484840152600281018054835181860281018601855281815295969295938701949192909184015b8282101561084757838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906107f7565b505050915250909392505050565b61085d610af8565b6108676000610d5e565b565b6108966040518060600160405280600081526020016000815260200160006001600160401b031681525090565b5060408051606081018252600454815260055460208201526006546001600160401b03169181019190915290565b6108cc610af8565b6003805460ff19169055565b6108e0610af8565b6003805460ff19166001179055565b6108f7610af8565b6001600160a01b03166000908152600260205260409020805460ff19169055565b610920610af8565b620f424081351080610937575064e8d4a510008135115b1561097157604051638b39eb3360e01b815281356004820152620f4240602482015264e8d4a5100060448201526064015b60405180910390fd5b6001816020013510156109a45760405163387a058b60e01b81526020820135600482015260016024820152604401610968565b60016109b66060830160408401611466565b6001600160401b03161015610a01576109d56060820160408301611466565b604051630161019760e01b81526001600160401b03909116600482015260016024820152604401610968565b806004610a0e8282611483565b50506003805460ff191660011790557fdf1f77551f6fd65be59ba5210e34eba28a083b1e076a140cd029c3b0794d574f81356020830135610a556060850160408601611466565b6040805193845260208401929092526001600160401b03169082015260600160405180910390a150565b610a87610af8565b6001600160a01b038116610aec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610968565b610af581610d5e565b50565b6000546001600160a01b031633146108675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610968565b6000826000190484118302158202610b6957600080fd5b5091020490565b60075460405163034d94bb60e21b815260009182916001600160a01b0390911690630d3652ec90610ba790899089906004016114c3565b602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be891906114d7565b610c0957858560405163c16fc3ad60e01b81526004016109689291906114c3565b6000610c1443610c53565b90506000610c228983610dae565b90506000610c328a838989610efb565b90506000610c428b848a8a610f64565b9b919a509098505050505050505050565b6005546000908210610c7157600554610c6c90836112bd565b610c74565b60005b92915050565b3360009081526001602081905260409091208054918101549091905b600283015481108015610ccf575083836002018281548110610cba57610cba611291565b90600052602060002090600302016002015411155b15610d1a57826002018181548110610ce957610ce9611291565b90600052602060002090600302016000015482610d0691906112bd565b915080610d12816114f9565b915050610c96565b90825560019091015550565b336000908152600160205260409020610d3f8184610f9d565b15610d5357610d4e8183610feb565b505050565b610d4e818484611052565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600090815260016020818152604080842081516060810183528154815293810154848401526002810180548351818602810186018552818152879695939486019390929190879084015b82821015610e525783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190610e02565b50505091525050604081015151909150610e70576000915050610c74565b805160208201515b82604001515181108015610eac57508483604001518281518110610e9e57610e9e611291565b602002602001015160400151105b15610ef25782604001518181518110610ec757610ec7611291565b60200260200101516000015182610ede91906112bd565b915080610eea816114f9565b915050610e78565b50949350505050565b6001600160a01b03841660009081526002602052604081205460ff1615610f23575080610f5c565b81610f2e8486611514565b11610f4f5782610f3e85846112bd565b610f4891906112bd565b9050610f5c565b610f5984836112bd565b90505b949350505050565b6001600160a01b03841660009081526002602052604081205460ff16158015610f59575081610f938486611514565b1195945050505050565b60028201546000901580159061077a5750600283018054610fc0906001906112bd565b81548110610fd057610fd0611291565b90600052602060002090600302016002015482109392505050565b600282018054829190611000906001906112bd565b8154811061101057611010611291565b906000526020600020906003020160000160008282546110309190611514565b9091555050815481908390600090611049908490611514565b90915550505050565b6040805160608101825282815260208101849052600654600092820190611082906001600160401b031686611514565b90526002808601805460018181018355600092835260208084208651600390940201928355850151908201556040840151920191909155855491925083918691906110ce908490611514565b909155505050505050565b80356001600160a01b03811681146110f057600080fd5b919050565b60006020828403121561110757600080fd5b61077a826110d9565b60008083601f84011261112257600080fd5b5081356001600160401b0381111561113957600080fd5b60208301915083602082850101111561115157600080fd5b9250929050565b6000806000806060858703121561116e57600080fd5b611177856110d9565b935060208501356001600160401b0381111561119257600080fd5b61119e87828801611110565b9598909750949560400135949350505050565b6000806000604084860312156111c657600080fd5b83356001600160401b038111156111dc57600080fd5b6111e886828701611110565b909790965060209590950135949350505050565b600060208083526080830184518285015281850151604081818701528087015191506060808188015283835180865260a0890191508685019550600094505b8085101561126c5785518051835287810151888401528401518483015294860194600194909401939082019061123b565b5098975050505050505050565b60006060828403121561128b57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156112cf576112cf6112a7565b500390565b600181815b8085111561130f5781600019048211156112f5576112f56112a7565b8085161561130257918102915b93841c93908002906112d9565b509250929050565b60008261132657506001610c74565b8161133357506000610c74565b816001811461134957600281146113535761136f565b6001915050610c74565b60ff841115611364576113646112a7565b50506001821b610c74565b5060208310610133831016604e8410600b8410161715611392575081810a610c74565b61139c83836112d4565b80600019048211156113b0576113b06112a7565b029392505050565b600061077a8383611317565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006114016040830185876113c4565b9050826020830152949350505050565b60006020828403121561142357600080fd5b5051919050565b60608152600061143e6060830186886113c4565b6020830194909452506040015292915050565b6001600160401b0381168114610af557600080fd5b60006020828403121561147857600080fd5b813561077a81611451565b81358155602082013560018201556002810160408301356114a381611451565b815467ffffffffffffffff19166001600160401b03919091161790555050565b602081526000610f5c6020830184866113c4565b6000602082840312156114e957600080fd5b8151801515811461077a57600080fd5b600060001982141561150d5761150d6112a7565b5060010190565b60008219821115611527576115276112a7565b50019056fea2646970667358221220f6bc29b1eaf024d6a92c84075e947401902d8bcef5c1efeaee15eeb82dce7e4e64736f6c634300080c0033608060405234801561001057600080fd5b506104b4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630d3652ec1461005c57806322e01192146100845780632ef3accc146100995780637c661949146100ba578063c3825f4b146100d2575b600080fd5b61006f61006a3660046102b9565b6100fd565b60405190151581526020015b60405180910390f35b6100976100923660046102fb565b610129565b005b6100ac6100a73660046102fb565b610151565b60405190815260200161007b565b6100ac6100c8366004610363565b6000949350505050565b6100ac6100e03660046103bd565b805160208183018101805160008252928201919093012091525481565b600080838360405161011092919061046e565b9081526040519081900360200190205415159392505050565b806000848460405161013c92919061046e565b90815260405190819003602001902055505050565b600080848460405161016492919061046e565b908152602001604051809103902054600014156101d95760405162461bcd60e51b815260206004820152602860248201527f4d6f636b507269636541676772656761746f723a20746f6b656e206e6f7420736044820152671d5c1c1bdc9d195960c21b60648201526084015b60405180910390fd5b600082116102465760405162461bcd60e51b815260206004820152603460248201527f4d6f636b507269636541676772656761746f723a20616d6f756e74496e206d75604482015273073742062652067726561746572207468616e20360641b60648201526084016101d0565b6000848460405161025892919061046e565b90815260200160405180910390205490509392505050565b60008083601f84011261028257600080fd5b50813567ffffffffffffffff81111561029a57600080fd5b6020830191508360208285010111156102b257600080fd5b9250929050565b600080602083850312156102cc57600080fd5b823567ffffffffffffffff8111156102e357600080fd5b6102ef85828601610270565b90969095509350505050565b60008060006040848603121561031057600080fd5b833567ffffffffffffffff81111561032757600080fd5b61033386828701610270565b909790965060209590950135949350505050565b80356001600160a01b038116811461035e57600080fd5b919050565b6000806000806080858703121561037957600080fd5b61038285610347565b93506020850135925061039760408601610347565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156103cf57600080fd5b813567ffffffffffffffff808211156103e757600080fd5b818401915084601f8301126103fb57600080fd5b81358181111561040d5761040d6103a7565b604051601f8201601f19908116603f01168101908382118183101715610435576104356103a7565b8160405282815287602084870101111561044e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b818382376000910190815291905056fea26469706673582212202b50c263451038e2acbc9ac93da2cdbe051d3f34af869cb84c5e8be3a881111064736f6c634300080c003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50546f74616c205553442076616c75652073686f756c64206e6f7420657863656564207468652072617465206c696d69740000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d52656d61696e696e6720616d6f756e742073686f756c64206265206e6f6e2d6e6567617469766552617465206c696d69742073686f756c64206e6f742062652065786365656465642077697468696e206475726174696f6e52617465206c696d69742073686f756c64206265207265736574206166746572206475726174696f6e20657870697279280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358352656d61696e696e6720616d6f756e742073686f756c64206265207a65726f207768656e206c696d697420697320657863656564656452617465206c696d69742073686f756c642062652065786365656465642077697468696e206475726174696f6e885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d52617465206c696d69742073686f756c64206e6f74206265206578636565646564b2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8a2646970667358221220cf744d10ed5e2d284de8460fa8fabf052a2b13732b410e0c12de624a099e966464736f6c634300080c0033","sourceMap":"241:15988:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;676:435;;;:::i;:::-;;6921:969;;;:::i;6203:712::-;;;:::i;5466:731::-;;;:::i;11900:768::-;;;;;;:::i;:::-;;:::i;2161:134:26:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8036:595:84;;;:::i;3392:340::-;;;:::i;2930:133:26:-;;;:::i;2631:141::-;;;:::i;3738:357:84:-;;;:::i;11360:534::-;;;;;;:::i;:::-;;:::i;2447:178:26:-;;;:::i;:::-;;;;;;;:::i;2429:230:84:-;;;:::i;2191:232::-;;;:::i;2301:140:26:-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;14832:1228:84:-;;;;;;:::i;:::-;;:::i;2665:233::-;;;:::i;1866:141:26:-;;;:::i;10515:157:84:-;;;:::i;1819:584:20:-;;;:::i;:::-;;;4810:14:120;;4803:22;4785:41;;4773:2;4758:18;1819:584:20;4645:187:120;4101:1359:84;;;:::i;2904:254::-;;;:::i;9256:708::-;;;:::i;12674:1189::-;;;;;;:::i;:::-;;:::i;9970:539::-;;;:::i;3164:222::-;;;:::i;2013:142:26:-;;;:::i;10678:676:84:-;;;;;;:::i;:::-;;:::i;13869:957::-;;;;;;:::i;:::-;;:::i;8637:613::-;;;:::i;1656:529::-;;;:::i;1572:26:20:-;;;;;;;;;676:435:84;710:16;;;;;;;;;;;;;-1:-1:-1;;;710:16:84;;;;;;;;;:8;;:16;:::i;:::-;-1:-1:-1;745:9:84;;736:6;:18;779:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;764:12:84;:32;;-1:-1:-1;;;;;;764:32:84;-1:-1:-1;;;;;764:32:84;;;;;;;;;;825:70;;;;;;;;867:12;;825:70;;;852:2;825:70;;;;;;;892:1;825:70;;;;;;806:16;:89;;;;;;;;-1:-1:-1;;806:89:84;;;;;;928:25;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;905:20:84;:48;;-1:-1:-1;;;;;;905:48:84;-1:-1:-1;;;;;905:48:84;;;;;;;;;1003:6;;963:47;;-1:-1:-1;;;963:47:84;;:29;;:47;;993:8;;1003:6;963:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1036:20:84;;1020:37;;-1:-1:-1;;;;;;1036:20:84;;-1:-1:-1;1020:15:84;:37::i;:::-;1067;;;;;;;;1087:16;1067:37;;;;;;;;;;;;;;-1:-1:-1;;;;;1067:37:84;;;;;;;;;;:19;:37::i;:::-;676:435::o;6921:969::-;7022:1;7052;7003:16;7080:13;7022:1;;7080:13;:::i;:::-;7126:20;;:47;;-1:-1:-1;;;7126:47:84;;-1:-1:-1;;;;;7063:30:84;;;;;-1:-1:-1;7103:20:84;;-1:-1:-1;;;;;7126:20:84;;;;:29;;:47;;7156:8;;7166:6;;7126:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7183:12;;7228:84;;;;;;;;7276:12;;7228:84;;;;;;;;-1:-1:-1;;;;;7228:84:84;;;;;;7183:139;;-1:-1:-1;;;7183:139:84;;7103:70;;-1:-1:-1;;;;;;7183:12:84;;;;:31;;:139;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7337:9;7332:132;7356:6;7352:1;:10;7332:132;;;7383:10;;-1:-1:-1;;;7383:10:84;;;;;9515:25:120;;;-1:-1:-1;;;;;;;;;;;7383:7:84;;;9488:18:120;;7383:10:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7407:12:84;;:46;;-1:-1:-1;;;7407:46:84;;-1:-1:-1;;;;;7407:12:84;;;;-1:-1:-1;7407:30:84;;-1:-1:-1;7407:46:84;;7438:8;;7448:4;;7407:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7364:3:84;;;;:::i;:::-;;;;7332:132;;;-1:-1:-1;7502:12:84;;:40;;-1:-1:-1;;;7502:40:84;;7536:4;7502:40;;;10540:51:120;7473:26:84;;-1:-1:-1;;;;;7502:12:84;;:25;;10513:18:120;;7502:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7502:40:84;;;;;;;;;;;;:::i;:::-;7473:69;-1:-1:-1;7552:19:84;7598:20;-1:-1:-1;;;;;7598:20:84;;:8;:20;:::i;:::-;7575:18;-1:-1:-1;;;;;7575:18:84;;:6;:18;:::i;:::-;7574:45;;;;:::i;:::-;7552:67;;7629:24;7685:11;7656:9;:19;;;:26;:40;;;;:::i;:::-;7629:67;-1:-1:-1;7706:21:84;7730:57;7774:12;7743:28;-1:-1:-1;;;;;7743:28:84;;7629:67;7743:28;:::i;:::-;:43;;;;:::i;:::-;7730:12;:57::i;:::-;7706:81;;7797:36;7806:9;:13;;;7821:11;7797:8;:36::i;:::-;7852:15;;7843:40;;7869:13;7843:8;:40::i;:::-;6993:897;;;;;;;;6921:969::o;6203:712::-;6338:20;;:44;;-1:-1:-1;;;6338:44:84;;6278:2;;6304:1;;6261:14;;-1:-1:-1;;;;;6338:20:84;;:29;;:44;;6368:8;;6378:3;;6338:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6392:12;;6424:72;;;;;;;;6466:12;;6424:72;;6451:2;6424:72;;;;6491:3;6424:72;;;;6392:105;;-1:-1:-1;;;6392:105:84;;6315:67;;-1:-1:-1;;;;;;6392:12:84;;;;:31;;:105;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6512:9;6507:198;6531:6;6527:1;:10;6507:198;;;6558:10;;-1:-1:-1;;;6558:10:84;;;;;9515:25:120;;;-1:-1:-1;;;;;;;;;;;6558:7:84;;;9488:18:120;;6558:10:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6587:9;6582:113;6606:3;6602:1;:7;6582:113;;;6634:12;;:46;;-1:-1:-1;;;6634:46:84;;-1:-1:-1;;;;;6634:12:84;;;;:30;;:46;;6665:8;;6675:4;;6634:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6611:3:84;;;;:::i;:::-;;;;6582:113;;;-1:-1:-1;6539:3:84;;;;:::i;:::-;;;;6507:198;;;-1:-1:-1;6743:12:84;;:40;;-1:-1:-1;;;6743:40:84;;6777:4;6743:40;;;10540:51:120;6714:26:84;;-1:-1:-1;;;;;6743:12:84;;:25;;10513:18:120;;6743:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6743:40:84;;;;;;;;;;;;:::i;:::-;6714:69;-1:-1:-1;6793:21:84;6817:41;6845:12;6830;6836:6;6830:3;:12;:::i;6817:41::-;6793:65;;6868:40;6877:9;:15;;;6894:13;6868:8;:40::i;:::-;6251:664;;;;;6203:712::o;5466:731::-;5584:12;;5616:76;;;;;;;;5664:12;;5616:76;;5545:1;5616:76;;;;;;5584:12;5616:76;;;;5584:109;;-1:-1:-1;;;5584:109:84;;5545:1;;5573;;-1:-1:-1;;;;;5584:12:84;;;;:31;;:109;;5616:76;5584:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5708:9;5703:132;5727:6;5723:1;:10;5703:132;;;5754:10;;-1:-1:-1;;;5754:10:84;;;;;9515:25:120;;;-1:-1:-1;;;;;;;;;;;5754:7:84;;;9488:18:120;;5754:10:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5778:12:84;;:46;;-1:-1:-1;;;5778:46:84;;-1:-1:-1;;;;;5778:12:84;;;;-1:-1:-1;5778:30:84;;-1:-1:-1;5778:46:84;;5809:8;;5819:4;;5778:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5735:3:84;;;;:::i;:::-;;;;5703:132;;;-1:-1:-1;;;;;;;;;;;;5844:7:84;5852:12;:8;5863:1;5852:12;:::i;:::-;5844:21;;;;;;;;;;;;;9515:25:120;;9503:2;9488:18;;9369:177;5844:21:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5875:12:84;;:46;;-1:-1:-1;;;5875:46:84;;-1:-1:-1;;;;;5875:12:84;;;;-1:-1:-1;5875:30:84;;-1:-1:-1;5875:46:84;;5906:8;;5916:4;;5875:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5960:12:84;;:40;;-1:-1:-1;;;5960:40:84;;5994:4;5960:40;;;10540:51:120;5931:26:84;;-1:-1:-1;;;;;5960:12:84;;:25;;10513:18:120;;5960:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5960:40:84;;;;;;;;;;;;:::i;:::-;6033:20;;:47;;-1:-1:-1;;;6033:47:84;;5931:69;;-1:-1:-1;6010:20:84;;-1:-1:-1;;;;;6033:20:84;;;;:29;;:47;;6063:8;;6073:6;;6033:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6010:70;;6090:21;6114:26;6127:12;6114;:26::i;:::-;6090:50;;6150:40;6159:9;:15;;;6176:13;6150:8;:40::i;11900:768::-;11996:22;12002:6;12010:1;12013:4;11996:5;:22::i;:::-;12052:20;;:44;;-1:-1:-1;;;12052:44:84;;11987:31;;-1:-1:-1;12029:20:84;;-1:-1:-1;;;;;12052:20:84;;;;:29;;:44;;12082:8;;12092:3;;12052:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12029:67;-1:-1:-1;12106:16:84;12151:4;12126:21;12029:67;12126:6;:21;:::i;:::-;12125:30;;;;:::i;:::-;12213:12;;:58;;-1:-1:-1;;;12213:58:84;;12106:49;;-1:-1:-1;12167:17:84;;;;-1:-1:-1;;;;;12213:12:84;;:32;;:58;;12246:6;;12254:8;;12264:6;;12213:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12166:105;;;;12298:12;;12286:8;:24;12282:380;;12326:57;12338:12;12326:57;;;;;;;;;;;;;;;;;:11;:57::i;:::-;12397:71;12406:15;12423:1;12397:71;;;;;;;;;;;;;;;;;:8;:71::i;:::-;12282:380;;;12499:52;12510:12;12499:52;;;;;;;;;;;;;;;;;:10;:52::i;:::-;12565:86;12574:15;12591:1;12565:86;;;;;;;;;;;;;;;;;:8;:86::i;:::-;11977:691;;;;11900:768;;:::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;8036:595:84:-;8129:12;;:33;;;-1:-1:-1;;;8129:33:84;;;;8088:38;;-1:-1:-1;;;;;8129:12:84;;:31;;:33;;;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8195:20;;:44;;-1:-1:-1;;;8195:44:84;;8088:74;;-1:-1:-1;8172:20:84;;-1:-1:-1;;;;;8195:20:84;;;;:29;;:44;;8225:8;;8235:3;;8195:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8303:12;;:62;;-1:-1:-1;;;8303:62:84;;8172:67;;-1:-1:-1;8266:4:84;;8249:14;;-1:-1:-1;;;;;8303:12:84;;:32;;:62;;8336:10;;8348:8;;8266:4;;8303:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8280:85;;;8375:29;8384:12;8398:5;8375:8;:29::i;:::-;8438:25;;8414:19;;8438:40;;8466:12;;8438:40;:::i;:::-;8437:46;;8482:1;8437:46;:::i;:::-;8436:55;;8487:4;8436:55;:::i;:::-;8519:12;;:67;;-1:-1:-1;;;8519:67:84;;8414:77;;-1:-1:-1;;;;;;8519:12:84;;:32;;:67;;8552:10;;8564:8;;8414:77;;8519:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8501:85:84;-1:-1:-1;8596:28:84;8501:85;8619:4;8596:8;:28::i;3392:340::-;3433:31;3467:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3502:33:84;;;;;;;;;;;;-1:-1:-1;;;3502:33:84;;;;3577:42;;-1:-1:-1;;;3577:42:84;;3433:59;;-1:-1:-1;3502:33:84;3564:3;;-1:-1:-1;;;;;3577:20:84;;;;;:42;;3502:33;;3564:3;;3577:42;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3629:28;3645:11;3629:15;:28::i;:::-;3677:37;;-1:-1:-1;;;3677:37:84;;3668:57;;-1:-1:-1;;;;;3677:20:84;;;;;:37;;3698:10;;3710:3;;3677:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3716:8;3668;:57::i;:::-;3423:309;;;3392:340::o;2930:133:26:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;3738:357:84:-;3798:12;;:43;;-1:-1:-1;;;3798:43:84;;3835:4;3798:43;;;10540:51:120;3786:56:84;;-1:-1:-1;;;;;3798:12:84;;:28;;10513:18:120;;3798:43:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3786:11;:56::i;:::-;3852:12;;:46;;-1:-1:-1;;;3852:46:84;;3892:4;3852:46;;;10540:51:120;-1:-1:-1;;;;;3852:12:84;;;;:31;;10513:18:120;;3852:46:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3919:12:84;;:43;;-1:-1:-1;;;3919:43:84;;3956:4;3919:43;;;10540:51:120;3908:55:84;;-1:-1:-1;;;;;;3919:12:84;;;;-1:-1:-1;3919:28:84;;10513:18:120;;3919:43:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3908:10;:55::i;:::-;3973:12;;:49;;-1:-1:-1;;;3973:49:84;;4016:4;3973:49;;;10540:51:120;-1:-1:-1;;;;;3973:12:84;;;;:34;;10513:18:120;;3973:49:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4044:12:84;;:43;;-1:-1:-1;;;4044:43:84;;4081:4;4044:43;;;10540:51:120;4032:56:84;;-1:-1:-1;;;;;;4044:12:84;;;;-1:-1:-1;4044:28:84;;10513:18:120;;4044:43:84;10394:203:120;11360:534:84;11452:22;11458:6;11466:1;11469:4;11452:5;:22::i;:::-;11508:20;;:44;;-1:-1:-1;;;11508:44:84;;11443:31;;-1:-1:-1;11485:20:84;;-1:-1:-1;;;;;11508:20:84;;;;:29;;:44;;11538:8;;11548:3;;11508:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11485:67;-1:-1:-1;11562:16:84;11607:4;11582:21;11485:67;11582:6;:21;:::i;:::-;11581:30;;;;:::i;:::-;11636:12;;:48;;-1:-1:-1;;;11636:48:84;;11562:49;;-1:-1:-1;11622:11:84;;-1:-1:-1;;;;;11636:12:84;;;;:30;;:48;;11667:8;;11677:6;;11636:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11622:62;;11711:12;;11699:8;:24;11695:193;;11739:55;11750:6;11739:55;;;;;;;;;;;;;;;;;:10;:55::i;:::-;11695:193;;;11825:52;11837:6;11825:52;;;;;;;;;;;;;;;;;:11;:52::i;:::-;11433:461;;;11360:534;:::o;2447:178:26:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2429:230:84:-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2492:15:84;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2554:58:84;;;;;;;;2519:32;2554:58;;2581:1;2554:58;;;;2609:1;2554:58;;;;;;;;-1:-1:-1;2622:30:84;;-1:-1:-1;2554:58:84;2622:19;:30::i;:::-;2482:177;2429:230::o;2191:232::-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2256:15:84;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2318:58:84;;;;;;;;2359:1;2318:58;;2283:32;2318:58;;;;2373:1;2318:58;;;;;;;;-1:-1:-1;2386:30:84;;-1:-1:-1;2318:58:84;2386:19;:30::i;2301:140:26:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14832:1228:84;14931:20;14937:6;14945:1;14948:2;14931:5;:20::i;:::-;14922:29;;14970:22;14976:6;14984:1;14987:4;14970:5;:22::i;:::-;14961:31;;15003:18;15024:22;;;;;;;;;;;;;;-1:-1:-1;;;15024:22:84;;;:8;:22::i;:::-;15079:20;;:44;;-1:-1:-1;;;15079:44:84;;15003:43;;-1:-1:-1;15056:20:84;;-1:-1:-1;;;;;15079:20:84;;;;:29;;:44;;15109:8;;15119:3;;15079:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15056:67;-1:-1:-1;15133:16:84;15176:4;15152:21;15056:67;15152:6;:21;:::i;:::-;:28;;;;:::i;:::-;15221:12;;15253:76;;;;;;;;15301:12;;15253:76;;15210:1;15253:76;;;;;;15221:12;15253:76;;;;15221:109;;-1:-1:-1;;;15221:109:84;;15133:47;;-1:-1:-1;15210:1:84;;-1:-1:-1;;;;;15221:12:84;;;;:31;;:109;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15346:9;15341:463;15365:6;15361:1;:10;15341:463;;;15392:20;;-1:-1:-1;;;15392:20:84;;-1:-1:-1;;;;;10558:32:120;;15392:20:84;;;10540:51:120;-1:-1:-1;;;;;;;;;;;15392:8:84;;;10513:18:120;;15392:20:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15440:12:84;;:48;;-1:-1:-1;;;15440:48:84;;15426:11;;-1:-1:-1;;;;;;15440:12:84;;;;-1:-1:-1;15440:30:84;;:48;;15471:8;;15481:6;;15440:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15529:12;;15426:62;;-1:-1:-1;15517:8:84;15508:5;:1;15512;15508:5;:::i;:::-;15507:18;;;;:::i;:::-;:34;15503:251;;15561:71;15572:6;15561:71;;;;;;;;;;;;;;;;;:10;:71::i;:::-;15503:251;;;15671:68;15683:6;15671:68;;;;;;;;;;;;;;;;;:11;:68::i;:::-;-1:-1:-1;;;;;;;;;;;15768:7:84;15776:16;:12;15791:1;15776:16;:::i;:::-;15768:25;;;;;;;;;;;;;9515::120;;9503:2;9488:18;;9369:177;15768:25:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15378:426;15373:3;;;;;:::i;:::-;;;;15341:463;;;-1:-1:-1;;;;;;;;;;;;15814:7:84;15822:23;15837:8;15822:12;:23;:::i;:::-;:27;;15848:1;15822:27;:::i;:::-;15814:36;;;;;;;;;;;;;9515:25:120;;9503:2;9488:18;;9369:177;15814:36:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15861:20:84;;-1:-1:-1;;;15861:20:84;;-1:-1:-1;;;;;10558:32:120;;15861:20:84;;;10540:51:120;-1:-1:-1;;;;;;;;;;;15861:8:84;-1:-1:-1;15861:8:84;;-1:-1:-1;10513:18:120;;15861:20:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15910:12:84;;15951;;15891:16;;-1:-1:-1;;;;;;15910:12:84;;;;-1:-1:-1;15910:30:84;;15941:8;;15951:16;;15910:12;;15951:16;:::i;:::-;15910:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15891:77;;15978:75;15989:11;15978:75;;;;;;;;;;;;;;;;;:10;:75::i;:::-;14912:1148;;;;;14832:1228;;:::o;2665:233::-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2731:15:84;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2793:58:84;;;;;;;;2834:1;2793:58;;2820:1;2793:58;;;;2758:32;2793:58;;;;;;;;-1:-1:-1;2861:30:84;;-1:-1:-1;2793:58:84;2861:19;:30::i;1866:141:26:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10515:157:84;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;10583:15:84;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10610:12:84;;:55;;-1:-1:-1;;;10610:55:84;;10643:10;10610:55;;;;16201:51:120;;;;16288:2;16268:18;;;16261:30;16307:18;;;16300:29;-1:-1:-1;;;16345:19:120;;;16338:35;10663:1:84;16425:18:120;;;16418:34;-1:-1:-1;;;;;10610:12:84;;;;-1:-1:-1;10610:32:84;;-1:-1:-1;16390:19:120;;10610:55:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10515:157::o;1819:584:20:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:20;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:20;;;16637:51:120;;;-1:-1:-1;;;16704:18:120;;;16697:34;2196:43:20;;;;;;;;;16610:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;4101:1359:84:-;4204:20;;:44;;-1:-1:-1;;;4204:44:84;;4170:1;;4151:16;;-1:-1:-1;;;;;4204:20:84;;;;:29;;:44;;4234:8;;4244:3;;4204:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4181:67;-1:-1:-1;4275:1:84;4300;4258:14;4337:18;-1:-1:-1;;;;;4337:18:84;;4275:1;4337:18;:::i;:::-;4365:12;;4397:78;;;;;;;;4439:12;;4397:78;;4424:2;4397:78;;;;-1:-1:-1;;;;;4397:78:84;;;;;;4365:111;;-1:-1:-1;;;4365:111:84;;4311:44;;-1:-1:-1;;;;;;4365:12:84;;;;:31;;:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4487:11:84;;-1:-1:-1;4487:11:84;;-1:-1:-1;;4508:207:84;4532:6;4528:1;:10;4508:207;;;4559:10;;-1:-1:-1;;;4559:10:84;;;;;9515:25:120;;;-1:-1:-1;;;;;;;;;;;4559:7:84;;;9488:18:120;;4559:10:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4588:9;4583:122;4607:3;4603:1;:7;4583:122;;;4644:12;;:46;;-1:-1:-1;;;4644:46:84;;-1:-1:-1;;;;;4644:12:84;;;;:30;;:46;;4675:8;;4685:4;;4644:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4635:55;-1:-1:-1;4612:3:84;;;;:::i;:::-;;;;4583:122;;;-1:-1:-1;4540:3:84;;;;:::i;:::-;;;;4508:207;;;-1:-1:-1;4753:12:84;;:40;;-1:-1:-1;;;4753:40:84;;4787:4;4753:40;;;10540:51:120;4724:26:84;;-1:-1:-1;;;;;4753:12:84;;:25;;10513:18:120;;4753:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4753:40:84;;;;;;;;;;;;:::i;:::-;4724:69;-1:-1:-1;4803:21:84;4827:41;4855:12;4840;4846:6;4840:3;:12;:::i;4827:41::-;4803:65;;4878:40;4887:9;:15;;;4904:13;4878:8;:40::i;:::-;4928:53;4937:9;:19;;;:26;4965:15;4928:8;:53::i;:::-;4991:26;5000:9;:13;;;5015:1;4991:8;:26::i;:::-;5028:12;;5060:69;;;;;;;;5101:12;;5060:69;;5028:12;5060:69;;;;;;;;;;5028:102;;-1:-1:-1;;;5028:102:84;;-1:-1:-1;;;;;5028:12:84;;;;:31;;:102;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5140:7:84;-1:-1:-1;5140:7:84;;-1:-1:-1;5148:10:84;;-1:-1:-1;5148:6:84;5157:1;5148:10;:::i;:::-;5140:19;;;;;;;;;;;;;9515:25:120;;9503:2;9488:18;;9369:177;5140:19:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5178:12:84;;:46;;-1:-1:-1;;;5178:46:84;;-1:-1:-1;;;;;5178:12:84;;;;-1:-1:-1;5178:30:84;;-1:-1:-1;5178:46:84;;5209:8;;5219:4;;5178:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5246:12;;:40;;-1:-1:-1;;;5246:40:84;;5280:4;5246:40;;;10540:51:120;5169:55:84;;-1:-1:-1;;;;;;5246:12:84;;:25;;10513:18:120;;5246:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5246:40:84;;;;;;;;;;;;:::i;:::-;5234:52;;5312:26;5325:12;5312;:26::i;:::-;5296:42;;5348:40;5357:9;:15;;;5374:13;5348:8;:40::i;:::-;5398:55;5407:9;:13;;;5451:1;5422:9;:19;;;:26;:30;;;;:::i;:::-;5398:8;:55::i;2904:254::-;2961:12;;;;;;;;;-1:-1:-1;;;;;2961:12:84;-1:-1:-1;;;;;2961:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3004:48;3016:12;;;;;;;;;-1:-1:-1;;;;;3016:12:84;-1:-1:-1;;;;;3016:33:84;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3004:48;3062:12;;;;;;;;;-1:-1:-1;;;;;3062:12:84;-1:-1:-1;;;;;3062:30:84;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3104:47;3115:12;;;;;;;;;-1:-1:-1;;;;;3115:12:84;-1:-1:-1;;;;;3115:33:84;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9256:708;9321:18;9342:22;;;;;;;;;;;;;;-1:-1:-1;;;9342:22:84;;;:8;:22::i;:::-;9397:20;;:44;;-1:-1:-1;;;9397:44:84;;9321:43;;-1:-1:-1;9374:20:84;;-1:-1:-1;;;;;9397:20:84;;;;:29;;:44;;9427:8;;9437:3;;9397:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9483:20;;-1:-1:-1;;;9483:20:84;;-1:-1:-1;;;;;10558:32:120;;9483:20:84;;;10540:51:120;9374:67:84;;-1:-1:-1;9468:4:84;;-1:-1:-1;;;;;;;;;;;9483:8:84;;;10513:18:120;;9483:20:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9513:12:84;;:48;;-1:-1:-1;;;9513:48:84;;-1:-1:-1;;;;;9513:12:84;;;;-1:-1:-1;9513:30:84;;-1:-1:-1;9513:48:84;;9544:8;;9554:6;;9513:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9572:20:84;;-1:-1:-1;;;9572:20:84;;-1:-1:-1;;;;;10558:32:120;;9572:20:84;;;10540:51:120;-1:-1:-1;;;;;;;;;;;9572:8:84;;;10513:18:120;;9572:20:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9602:12:84;;:48;;-1:-1:-1;;;9602:48:84;;-1:-1:-1;;;;;9602:12:84;;;;-1:-1:-1;9602:30:84;;-1:-1:-1;9602:48:84;;9633:8;;9643:6;;9602:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9708:12:84;;:62;;-1:-1:-1;;;9708:62:84;;9662:17;;;;-1:-1:-1;;;;;9708:12:84;;;;:32;;:62;;9741:10;;9753:8;;9763:6;;9708:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9661:109;;;;9780:29;9789:12;9803:5;9780:8;:29::i;:::-;9819:31;9853:44;9880:16;9884:12;9880:1;:16;:::i;:::-;9866:30;;:11;:30;:::i;9853:44::-;9819:78;;9907:50;9916:15;9933:23;9907:8;:50::i;12674:1189::-;12806:21;12812:7;12806:21;;12821:1;12824:2;12806:5;:21::i;:::-;12790:38;;12854:32;12860:13;12875:4;12881;12854:5;:32::i;:::-;12838:48;;12920:29;12926:15;12920:29;;12943:1;12946:2;12920:5;:29::i;:::-;13019:20;;:44;;-1:-1:-1;;;13019:44:84;;12896:54;;-1:-1:-1;12961:21:84;;;;-1:-1:-1;;;;;13019:20:84;;:29;;:44;;13049:8;;13059:3;;13019:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12996:67;;13079:7;13074:588;13096:7;13092:11;;:1;:11;;;13074:588;;;13124:14;13158:8;;;;13162:4;13158:8;:::i;:::-;13141:26;;;;:13;:26;:::i;:::-;13124:43;-1:-1:-1;13181:16:84;13226:4;13201:21;13210:12;13124:43;13201:21;:::i;:::-;13200:30;;;;:::i;:::-;13181:49;-1:-1:-1;13244:25:84;13181:49;13244:25;;:::i;:::-;13298:12;;:48;;-1:-1:-1;;;13298:48:84;;13244:25;;-1:-1:-1;13284:11:84;;-1:-1:-1;;;;;13298:12:84;;;;:30;;:48;;13329:8;;13339:6;;13298:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13284:62;;13382:12;;13365:13;:29;13361:237;;13414:55;13425:6;13414:55;;;;;;;;;;;;;;;;;:10;:55::i;:::-;13361:237;;;13508:52;13520:6;13508:52;;;;;;;;;;;;;;;;;:11;:52::i;:::-;13578:5;;;;;13361:237;-1:-1:-1;;;;;;;;;;;13612:7:84;13620:30;;;;:12;:30;:::i;:::-;13612:39;;;;;;;;;;;;;9515:25:120;;9503:2;9488:18;;9369:177;13612:39:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13110:552;;;13105:3;;;;;:::i;:::-;;;;13074:588;;;-1:-1:-1;13701:12:84;;:40;;-1:-1:-1;;;13701:40:84;;13735:4;13701:40;;;10540:51:120;13672:26:84;;-1:-1:-1;;;;;13701:12:84;;:25;;10513:18:120;;13701:40:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13701:40:84;;;;;;;;;;;;:::i;:::-;13672:69;;13751:105;13760:9;:15;;;13777:26;13790:12;;13777;:26::i;:::-;13751:105;;;;;;;;;;;;;;;;;:8;:105::i;9970:539::-;10041:18;10062:22;;;;;;;;;;;;;;-1:-1:-1;;;10062:22:84;;;:8;:22::i;:::-;10117:20;;:44;;-1:-1:-1;;;10117:44:84;;10041:43;;-1:-1:-1;10094:20:84;;-1:-1:-1;;;;;10117:20:84;;;;:29;;:44;;10147:8;;10157:3;;10117:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10094:67;;10171:14;10235:12;10189;;;;;;;;;-1:-1:-1;;;;;10189:12:84;-1:-1:-1;;;;;10189:31:84;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;:58;;;;:::i;:::-;10188:67;;10251:4;10188:67;:::i;:::-;10266:20;;-1:-1:-1;;;10266:20:84;;-1:-1:-1;;;;;10558:32:120;;10266:20:84;;;10540:51:120;10171:84:84;;-1:-1:-1;;;;;;;;;;;;10266:8:84;;;10513:18:120;;10266:20:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10296:12:84;;:48;;-1:-1:-1;;;10296:48:84;;-1:-1:-1;;;;;10296:12:84;;;;-1:-1:-1;10296:30:84;;-1:-1:-1;10296:48:84;;10327:8;;10337:6;;10296:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10402:12:84;;:62;;-1:-1:-1;;;10402:62:84;;10356:17;;;;-1:-1:-1;;;;;10402:12:84;;;;:32;;:62;;10435:10;;10447:8;;10457:6;;10402:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10355:109;;;;10474:28;10483:12;10497:4;10474:8;:28::i;3164:222::-;3211:29;3243:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3211:57;;3278:26;3294:9;3278:15;:26::i;:::-;3331:12;;:26;;;-1:-1:-1;;;3331:26:84;;;;3314:65;;-1:-1:-1;;;;;3331:12:84;;:24;;:26;;;;;;;;;;;;;;:12;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3368:9;3314:8;:65::i;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;10678:676:84:-;10798:24;10804:8;10814:1;10817:4;10798:5;:24::i;:::-;10787:35;;10844:27;10850:9;10861:3;10866:4;10844:5;:27::i;:::-;10832:39;;10900:24;10906:9;-1:-1:-1;;;;;10900:24:84;10917:1;10920:3;10900:5;:24::i;:::-;10881:44;;10936:32;10983:81;;;;;;;;11031:9;10983:81;;;;11010:8;10983:81;;;;11053:9;-1:-1:-1;;;;;10983:81:84;;;;10936:128;;11074:30;11094:9;11074:19;:30::i;:::-;11154:12;;:33;;;-1:-1:-1;;;11154:33:84;;;;11115:36;;-1:-1:-1;;;;;11154:12:84;;:31;;:33;;;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11115:72;;11197:42;11206:13;:22;;;11230:8;11197;:42::i;:::-;11258:23;;11249:44;;11283:9;11249:8;:44::i;:::-;11303;11312:13;:23;;;-1:-1:-1;;;;;11303:44:84;11337:9;-1:-1:-1;;;;;11303:44:84;:8;:44::i;13869:957::-;14005:21;14011:7;14005:21;;14020:1;14023:2;14005:5;:21::i;:::-;13989:38;;14052:31;14058:12;14072:3;14077:5;14052;:31::i;:::-;14037:46;;14129:32;14135:13;14150:4;14156;14129:5;:32::i;:::-;14113:48;;14177:7;14172:648;14194:7;14190:11;;:1;:11;;;14172:648;;;14222:16;14257:7;;;;14261:3;14257:7;:::i;:::-;14241:24;;;;:12;:24;:::i;:::-;14222:43;-1:-1:-1;14279:14:84;14313:8;;;;14317:4;14313:8;:::i;:::-;14296:26;;;;:13;:26;:::i;:::-;14337:20;;:49;;-1:-1:-1;;;14337:49:84;;14279:43;;-1:-1:-1;;;;;;14337:20:84;;:29;;:49;;14367:8;;14377;;14337:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14401:16;14442:4;14430:8;14421:6;:17;;;;:::i;:::-;14420:26;;;;:::i;:::-;14475:12;;:48;;-1:-1:-1;;;14475:48:84;;14401:45;;-1:-1:-1;14461:11:84;;-1:-1:-1;;;;;14475:12:84;;;;:30;;:48;;14506:8;;14516:6;;14475:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14461:62;;14554:12;;14542:8;:24;14538:232;;14586:55;14597:6;14586:55;;;;;;;;;;;;;;;;;:10;:55::i;:::-;14538:232;;;14680:52;14692:6;14680:52;;;;;;;;;;;;;;;;;:11;:52::i;:::-;14750:5;;;;;;14538:232;-1:-1:-1;;;;;;;;;;;14784:7:84;14792:16;:12;14807:1;14792:16;:::i;:::-;14784:25;;;;;;;;;;;;;9515::120;;9503:2;9488:18;;9369:177;14784:25:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14208:612;;;;14203:3;;;;;:::i;:::-;;;;14172:648;;8637:613;8696:18;8717:22;;;;;;;;;;;;;;-1:-1:-1;;;8717:22:84;;;:8;:22::i;:::-;8772:20;;:44;;-1:-1:-1;;;8772:44:84;;8696:43;;-1:-1:-1;8749:20:84;;-1:-1:-1;;;;;8772:20:84;;;;:29;;:44;;8802:8;;8812:3;;8772:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8858:20;;-1:-1:-1;;;8858:20:84;;-1:-1:-1;;;;;10558:32:120;;8858:20:84;;;10540:51:120;8749:67:84;;-1:-1:-1;8843:4:84;;-1:-1:-1;;;;;;;;;;;8858:8:84;;;10513:18:120;;8858:20:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8888:12:84;;:48;;-1:-1:-1;;;8888:48:84;;-1:-1:-1;;;;;8888:12:84;;;;-1:-1:-1;8888:30:84;;-1:-1:-1;8888:48:84;;8919:8;;8929:6;;8888:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8994:12:84;;:62;;-1:-1:-1;;;8994:62:84;;8948:17;;;;-1:-1:-1;;;;;8994:12:84;;;;:32;;:62;;9027:10;;9039:8;;9049:6;;8994:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8947:109;;;;9066:29;9075:12;9089:5;9066:8;:29::i;:::-;9105:31;9139:44;9166:16;9170:12;9166:1;:16;:::i;1656:529::-;1742:67;;;;;;;;1784:9;1742:67;;1769:2;1742:67;;;;1806:1;1742:67;;;;;;;1819:30;1742:67;1819:19;:30::i;:::-;1898:12;;:33;;;-1:-1:-1;;;1898:33:84;;;;1859:36;;-1:-1:-1;;;;;1898:12:84;;:31;;:33;;;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1859:72;;1941:52;1950:13;:22;;;1974:9;:18;;;1941:8;:52::i;:::-;2012:23;;2037:19;;2003:54;;2012:23;2003:8;:54::i;:::-;2067;2076:13;:23;;;-1:-1:-1;;;;;2067:54:84;2101:9;:19;;;-1:-1:-1;;;;;2067:54:84;:8;:54::i;:::-;2142:12;;:35;;;-1:-1:-1;;;2142:35:84;;;;2131:47;;-1:-1:-1;;;;;2142:12:84;;:33;;:35;;;;;;;;;;;;;;:12;:35;;;;;;;;;;;;;;1117:130;1199:12;;:41;;-1:-1:-1;;;1199:41:84;;-1:-1:-1;;;;;10558:32:120;;;1199:41:84;;;10540:51:120;1199:12:84;;;;:27;;10513:18:120;;1199:41:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:397;1365:1;1350:3;:12;;;:16;1342:77;;;;-1:-1:-1;;;1342:77:84;;18599:2:120;1342:77:84;;;18581:21:120;18638:2;18618:18;;;18611:30;18677:34;18657:18;;;18650:62;-1:-1:-1;;;18728:18:120;;;18721:46;18784:19;;1342:77:84;;;;;;;;;1437:13;;1429:79;;;;-1:-1:-1;;;1429:79:84;;19016:2:120;1429:79:84;;;18998:21:120;19055:2;19035:18;;;19028:30;19094:34;19074:18;;;19067:62;-1:-1:-1;;;19145:18:120;;;19138:47;19202:19;;1429:79:84;18814:413:120;1429:79:84;1542:1;1526:3;:13;;;-1:-1:-1;;;;;1526:17:84;;1518:79;;;;-1:-1:-1;;;1518:79:84;;19434:2:120;1518:79:84;;;19416:21:120;19473:2;19453:18;;;19446:30;19512:34;19492:18;;;19485:62;-1:-1:-1;;;19563:18:120;;;19556:47;19620:19;;1518:79:84;19232:413:120;1518:79:84;1607:12;;:36;;-1:-1:-1;;;1607:36:84;;-1:-1:-1;;;;;1607:12:84;;;;:31;;:36;;1639:3;;1607:36;;;:::i;16066:161::-;16140:7;16166:54;16184:19;;16205:14;;16166:6;:17;;:54;;;;;:::i;:::-;16159:61;16066:161;-1:-1:-1;;16066:161:84:o;5209:262:20:-;5271:1;5266;:6;5262:203;;-1:-1:-1;;;;;;;;;;;5293:41:20;;;;19852:2:120;19834:21;;;19891:2;19871:18;;;19864:30;19930:34;19925:2;19910:18;;19903:62;-1:-1:-1;;;19996:2:120;19981:18;;19974:32;20038:3;20023:19;;19650:398;5293:41:20;;;;;;;;-1:-1:-1;;;;;;;;;;;5382:1:20;5353:31;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;5432:1:20;5403:31;;;;;;:::i;:::-;;;;;;;;5448:6;:4;:6::i;2815:190:31:-;2898:14;2933:19;2940:1;2943:3;2948;2933:6;:19::i;:::-;2924:28;;2962:36;;;;;;;;;;;;;;-1:-1:-1;;;2962:36:31;;;2991:6;2962:12;:36::i;:::-;2815:190;;;;;:::o;676:107:22:-;754:22;766:4;765:5;772:3;754:10;:22::i;12219:177:20:-;12299:1;12295;:5;12291:99;;;-1:-1:-1;;;;;;;;;;;12347:3:20;12321:30;;;;;;:::i;:::-;;;;;;;;12365:14;12374:1;12377;12365:8;:14::i;3425:191::-;3504:9;3499:111;;-1:-1:-1;;;;;;;;;;;3560:3:20;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3578:10;:21::i;5476:178::-;5557:1;5552;:6;5548:100;;-1:-1:-1;;;;;;;;;;;5605:3:20;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;789:312:22:-;859:1;854:6;;:1;:6;;;850:245;;-1:-1:-1;;;;;;;;;;;881:41:22;;;;21740:2:120;21722:21;;;21779:2;21759:18;;;21752:30;21818:34;21813:2;21798:18;;21791:62;-1:-1:-1;;;21884:2:120;21869:18;;21862:32;21926:3;21911:19;;21538:398;881:41:22;;;;;;;;-1:-1:-1;;;;;;;;;;;972:1:22;:20;;;;;;;;;;;;;;;-1:-1:-1;;;972:20:22;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;972:20:22;;;;941:52;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;1043:1:22;:20;;;;;;;;;;;;;;;-1:-1:-1;;;1043:20:22;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1043:20:22;;;;1012:52;;;;;;:::i;587:83::-;646:17;658:4;657:5;3262:157:20;3322:9;3317:96;;-1:-1:-1;;;;;;;;;;;3352:30:20;;;;23033:2:120;23015:21;;;23072:2;23052:18;;;23045:30;23111:25;23106:2;23091:18;;23084:53;23169:2;23154:18;;22831:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;16415:125:24:-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16185:177:20:-;16265:1;16261;:5;16257:99;;;-1:-1:-1;;;;;;;;;;;16313:3:20;16287:30;;;;;;:::i;:::-;;;;;;;;16331:14;16340:1;16343;16331:8;:14::i;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:20;:1;-1:-1:-1;;;;;3685:6:20;;3681:212;;-1:-1:-1;;;;;;;;;;;3712:44:20;;;;23385:2:120;23367:21;;;23424:2;23404:18;;;23397:30;23463:34;23458:2;23443:18;;23436:62;-1:-1:-1;;;23529:2:120;23514:18;;23507:35;23574:3;23559:19;;23183:401;3712:44:20;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;1564:526:56:-;1680:9;1928:1;-1:-1:-1;;1911:19:56;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:56;;2047:27;;1564:526::o;2409:432:20:-;-1:-1:-1;;;;;;;;;;;2985:55:20;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:20;;;24549:51:120;;;-1:-1:-1;;;24616:18:120;;;24609:34;;;;2712:4:20;24659:18:120;;;24652:34;2489:11:20;;1671:64;2586:43;;24522:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;1546:1263:31:-;1630:14;1671:3;1664;:10;;1656:85;;;;-1:-1:-1;;;1656:85:31;;24899:2:120;1656:85:31;;;24881:21:120;24938:2;24918:18;;;24911:30;24977:34;24957:18;;;24950:62;25048:32;25028:18;;;25021:60;25098:19;;1656:85:31;24697:426:120;1656:85:31;1975:3;1970:1;:8;;:20;;;;;1987:3;1982:1;:8;;1970:20;1966:34;;;-1:-1:-1;1999:1:31;1992:8;;1966:34;2011:12;2026:9;2032:3;2026;:9;:::i;:::-;:13;;2038:1;2026:13;:::i;:::-;2011:28;;2234:1;2229;:6;;:18;;;;;2246:1;2239:4;:8;2229:18;2225:38;;;2256:7;2262:1;2256:3;:7;:::i;:::-;2249:14;;;;;2225:38;2282:15;2296:1;-1:-1:-1;;2282:15:31;:::i;:::-;2277:1;:20;;:46;;;;-1:-1:-1;2308:15:31;2322:1;-1:-1:-1;;2308:15:31;:::i;:::-;2301:4;:22;2277:46;2273:82;;;2339:15;2353:1;-1:-1:-1;;2339:15:31;:::i;:::-;2332:23;;:3;:23;:::i;2273:82::-;2459:3;2455:1;:7;2451:352;;;2478:12;2493:7;2497:3;2493:1;:7;:::i;:::-;2478:22;-1:-1:-1;2514:11:31;2528;2535:4;2478:22;2528:11;:::i;:::-;2514:25;-1:-1:-1;2557:8:31;2553:24;;2574:3;2567:10;;;;;;;2553:24;2612:1;2600:9;2606:3;2600;:9;:::i;:::-;:13;;;;:::i;:::-;2591:22;;2464:160;;2451:352;;;2638:3;2634:1;:7;2630:173;;;2657:12;2672:7;2678:1;2672:3;:7;:::i;:::-;2657:22;-1:-1:-1;2693:11:31;2707;2714:4;2657:22;2707:11;:::i;:::-;2693:25;-1:-1:-1;2736:8:31;2732:24;;2753:3;2746:10;;;;;;;2732:24;2779:9;2785:3;2779;:9;:::i;:::-;:13;;2791:1;2779:13;:::i;:::-;2770:22;;2643:160;;2630:173;1646:1163;1546:1263;;;;;:::o;10096:207::-;10172:11;679:42;-1:-1:-1;;;;;10188:36:31;10272:2;10276;10225:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10225:54:31;;;;;;;;;;;;;;-1:-1:-1;;;;;10225:54:31;-1:-1:-1;;;10225:54:31;;;10188:92;;;10225:54;10188:92;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11955:259:20;12016:1;12012;:5;12008:200;;;-1:-1:-1;;;;;;;;;;;12038:41:20;;;;25330:2:120;25312:21;;;25369:2;25349:18;;;25342:30;25408:34;25403:2;25388:18;;25381:62;-1:-1:-1;;;25474:2:120;25459:18;;25452:32;25516:3;25501:19;;25128:398;12038:41:20;;;;;;;;12098:30;;;25743:21:120;;;25800:1;25780:18;;;25773:29;-1:-1:-1;;;25833:2:120;25818:18;;25811:39;25917:4;25902:20;;25895:36;;;12098:30:20;;-1:-1:-1;;;;;;;;;;;12098:30:20;;;;25882:3:120;12098:30:20;;;12147;;;26154:21:120;;;26211:1;26191:18;;;26184:29;;;;-1:-1:-1;;;26244:2:120;26229:18;;26222:39;26328:4;26313:20;;26306:36;;;-1:-1:-1;;;;;;;;;;;12147:30:20;26293:3:120;26278:19;12147:30:20;25942:406:120;16134:242:24;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;9515:25:120;;;16269:33:24;-1:-1:-1;;;;;;;;;;;;16320:7:24;;;9488:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;;;;;;;;;;;;16349:8:24;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;15921:259:20:-;15982:1;15978;:5;15974:200;;;-1:-1:-1;;;;;;;;;;;16004:41:20;;;;27414:2:120;27396:21;;;27453:2;27433:18;;;27426:30;27492:34;27487:2;27472:18;;27465:62;-1:-1:-1;;;27558:2:120;27543:18;;27536:32;27600:3;27585:19;;27212:398;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:131:120;-1:-1:-1;;;;;89:31:120;;79:42;;69:70;;135:1;132;125:12;150:315;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;455:2;440:18;;;;427:32;;-1:-1:-1;;;150:315:120:o;636:658::-;807:2;859:21;;;929:13;;832:18;;;951:22;;;778:4;;807:2;1030:15;;;;1004:2;989:18;;;778:4;1073:195;1087:6;1084:1;1081:13;1073:195;;;1152:13;;-1:-1:-1;;;;;1148:39:120;1136:52;;1243:15;;;;1208:12;;;;1184:1;1102:9;1073:195;;;-1:-1:-1;1285:3:120;;636:658;-1:-1:-1;;;;;;636:658:120:o;1299:180::-;1358:6;1411:2;1399:9;1390:7;1386:23;1382:32;1379:52;;;1427:1;1424;1417:12;1379:52;-1:-1:-1;1450:23:120;;1299:180;-1:-1:-1;1299:180:120:o;1484:1569::-;1688:4;1717:2;1757;1746:9;1742:18;1787:2;1776:9;1769:21;1810:6;1845;1839:13;1876:6;1868;1861:22;1902:2;1892:12;;1935:2;1924:9;1920:18;1913:25;;1997:2;1987:6;1984:1;1980:14;1969:9;1965:30;1961:39;2035:2;2027:6;2023:15;2056:1;2077;2087:937;2103:6;2098:3;2095:15;2087:937;;;2172:22;;;-1:-1:-1;;2168:36:120;2156:49;;2228:13;;2315:9;;-1:-1:-1;;;;;2311:35:120;2296:51;;2386:11;;2380:18;2418:15;;;2411:27;;;2499:19;;2268:15;;;2531:24;;;2621:21;;;;2666:1;;2589:2;2577:15;;;2680:236;2696:8;2691:3;2688:17;2680:236;;;2777:15;;-1:-1:-1;;;;;;2773:42:120;2759:57;;2885:17;;;;2724:1;2715:11;;;;;2842:14;;;;2680:236;;;-1:-1:-1;3002:12:120;;;;2939:5;-1:-1:-1;;;2967:15:120;;;;2129:1;2120:11;2087:937;;;-1:-1:-1;3041:6:120;;1484:1569;-1:-1:-1;;;;;;;;;1484:1569:120:o;3058:258::-;3130:1;3140:113;3154:6;3151:1;3148:13;3140:113;;;3230:11;;;3224:18;3211:11;;;3204:39;3176:2;3169:10;3140:113;;;3271:6;3268:1;3265:13;3262:48;;;-1:-1:-1;;3306:1:120;3288:16;;3281:27;3058:258::o;3321:::-;3363:3;3401:5;3395:12;3428:6;3423:3;3416:19;3444:63;3500:6;3493:4;3488:3;3484:14;3477:4;3470:5;3466:16;3444:63;:::i;:::-;3561:2;3540:15;-1:-1:-1;;3536:29:120;3527:39;;;;3568:4;3523:50;;3321:258;-1:-1:-1;;3321:258:120:o;3584:803::-;3746:4;3775:2;3815;3804:9;3800:18;3845:2;3834:9;3827:21;3868:6;3903;3897:13;3934:6;3926;3919:22;3972:2;3961:9;3957:18;3950:25;;4034:2;4024:6;4021:1;4017:14;4006:9;4002:30;3998:39;3984:53;;4072:2;4064:6;4060:15;4093:1;4103:255;4117:6;4114:1;4111:13;4103:255;;;4210:2;4206:7;4194:9;4186:6;4182:22;4178:36;4173:3;4166:49;4238:40;4271:6;4262;4256:13;4238:40;:::i;:::-;4228:50;-1:-1:-1;4336:12:120;;;;4301:15;;;;4139:1;4132:9;4103:255;;;-1:-1:-1;4375:6:120;;3584:803;-1:-1:-1;;;;;;;3584:803:120:o;4392:248::-;4460:6;4468;4521:2;4509:9;4500:7;4496:23;4492:32;4489:52;;;4537:1;4534;4527:12;4489:52;-1:-1:-1;;4560:23:120;;;4630:2;4615:18;;;4602:32;;-1:-1:-1;4392:248:120:o;4837:156::-;4903:20;;4963:4;4952:16;;4942:27;;4932:55;;4983:1;4980;4973:12;4998:320;5071:6;5079;5087;5140:2;5128:9;5119:7;5115:23;5111:32;5108:52;;;5156:1;5153;5146:12;5108:52;5179:27;5196:9;5179:27;:::i;:::-;5169:37;;5253:2;5242:9;5238:18;5225:32;5215:42;;5276:36;5308:2;5297:9;5293:18;5276:36;:::i;:::-;5266:46;;4998:320;;;;;:::o;5323:129::-;-1:-1:-1;;;;;5401:5:120;5397:30;5390:5;5387:41;5377:69;;5442:1;5439;5432:12;5457:381;5533:6;5541;5549;5602:2;5590:9;5581:7;5577:23;5573:32;5570:52;;;5618:1;5615;5608:12;5570:52;5654:9;5641:23;5631:33;;5711:2;5700:9;5696:18;5683:32;5673:42;;5765:2;5754:9;5750:18;5737:32;5778:30;5802:5;5778:30;:::i;:::-;5827:5;5817:15;;;5457:381;;;;;:::o;5843:318::-;5918:6;5926;5934;5987:2;5975:9;5966:7;5962:23;5958:32;5955:52;;;6003:1;6000;5993:12;5955:52;6026:27;6043:9;6026:27;:::i;:::-;6016:37;6100:2;6085:18;;6072:32;;-1:-1:-1;6151:2:120;6136:18;;;6123:32;;5843:318;-1:-1:-1;;;5843:318:120:o;6166:380::-;6245:1;6241:12;;;;6288;;;6309:61;;6363:4;6355:6;6351:17;6341:27;;6309:61;6416:2;6408:6;6405:14;6385:18;6382:38;6379:161;;;6462:10;6457:3;6453:20;6450:1;6443:31;6497:4;6494:1;6487:15;6525:4;6522:1;6515:15;6379:161;;6166:380;;;:::o;6677:1053::-;6762:12;;6727:3;;6817:1;6837:18;;;;6890;;;;6917:61;;6971:4;6963:6;6959:17;6949:27;;6917:61;6997:2;7045;7037:6;7034:14;7014:18;7011:38;7008:161;;;7091:10;7086:3;7082:20;7079:1;7072:31;7126:4;7123:1;7116:15;7154:4;7151:1;7144:15;7008:161;568:19;;;620:4;611:14;;7266:18;7293:104;;;;7411:1;7406:318;;;;7259:465;;7293:104;-1:-1:-1;;7328:24:120;;7314:39;;7373:14;;;;-1:-1:-1;7293:104:120;;7406:318;6624:1;6617:14;;;6661:4;6648:18;;7500:1;7514:167;7528:6;7525:1;7522:13;7514:167;;;7608:14;;7593:13;;;7586:37;7651:16;;;;7543:10;;7514:167;;;7701:13;;;-1:-1:-1;;7259:465:120;;;;;;;;6677:1053;;;;:::o;7735:296::-;7909:2;7898:9;7891:21;7872:4;7929:53;7978:2;7967:9;7963:18;7955:6;7929:53;:::i;:::-;7921:61;;8018:6;8013:2;8002:9;7998:18;7991:34;7735:296;;;;;:::o;8036:127::-;8097:10;8092:3;8088:20;8085:1;8078:31;8128:4;8125:1;8118:15;8152:4;8149:1;8142:15;8168:270;8207:7;-1:-1:-1;;;;;8284:2:120;8281:1;8277:10;8314:2;8311:1;8307:10;8370:3;8366:2;8362:12;8357:3;8354:21;8347:3;8340:11;8333:19;8329:47;8326:73;;;8379:18;;:::i;:::-;8419:13;;8168:270;-1:-1:-1;;;;8168:270:120:o;8772:184::-;8842:6;8895:2;8883:9;8874:7;8870:23;8866:32;8863:52;;;8911:1;8908;8901:12;8863:52;-1:-1:-1;8934:16:120;;8772:184;-1:-1:-1;8772:184:120:o;8961:403::-;9193:13;;9175:32;;9263:4;9251:17;;;9245:24;9223:20;;;9216:54;9330:4;9318:17;;;9312:24;-1:-1:-1;;;;;9308:49:120;9286:20;;;9279:79;;;;9163:2;9148:18;;8961:403::o;9878:164::-;9954:13;;10003;;9996:21;9986:32;;9976:60;;10032:1;10029;10022:12;10047:202;10114:6;10167:2;10155:9;10146:7;10142:23;10138:32;10135:52;;;10183:1;10180;10173:12;10135:52;10206:37;10233:9;10206:37;:::i;10254:135::-;10293:3;-1:-1:-1;;10314:17:120;;10311:43;;;10334:18;;:::i;:::-;-1:-1:-1;10381:1:120;10370:13;;10254:135::o;10602:127::-;10663:10;10658:3;10654:20;10651:1;10644:31;10694:4;10691:1;10684:15;10718:4;10715:1;10708:15;10734:253;10806:2;10800:9;10848:4;10836:17;;-1:-1:-1;;;;;10868:34:120;;10904:22;;;10865:62;10862:88;;;10930:18;;:::i;:::-;10966:2;10959:22;10734:253;:::o;10992:275::-;11063:2;11057:9;11128:2;11109:13;;-1:-1:-1;;11105:27:120;11093:40;;-1:-1:-1;;;;;11148:34:120;;11184:22;;;11145:62;11142:88;;;11210:18;;:::i;:::-;11246:2;11239:22;10992:275;;-1:-1:-1;10992:275:120:o;11272:1647::-;11370:6;11401:2;11444;11432:9;11423:7;11419:23;11415:32;11412:52;;;11460:1;11457;11450:12;11412:52;11493:9;11487:16;-1:-1:-1;;;;;11563:2:120;11555:6;11552:14;11549:34;;;11579:1;11576;11569:12;11549:34;11617:6;11606:9;11602:22;11592:32;;11643:4;11681:2;11676;11667:7;11663:16;11659:25;11656:45;;;11697:1;11694;11687:12;11656:45;11723:22;;:::i;:::-;11774:2;11768:9;11761:5;11754:24;11824:2;11820;11816:11;11810:18;11805:2;11798:5;11794:14;11787:42;11848:2;11889;11885;11881:11;11875:18;11918:2;11908:8;11905:16;11902:36;;;11934:1;11931;11924:12;11902:36;11965:8;11961:2;11957:17;11947:27;;;12012:7;12005:4;12001:2;11997:13;11993:27;11983:55;;12034:1;12031;12024:12;11983:55;12063:2;12057:9;12085:2;12081;12078:10;12075:36;;;12091:18;;:::i;:::-;12131:36;12163:2;12158;12155:1;12151:10;12147:19;12131:36;:::i;:::-;12201:15;;;12232:12;;;;-1:-1:-1;12279:11:120;;;12271:20;;12267:29;;;12308:19;;;12305:39;;;12340:1;12337;12330:12;12305:39;12364:11;;;;12384:467;12400:6;12395:3;12392:15;12384:467;;;12480:2;12474:3;12465:7;12461:17;12457:26;12454:116;;;12524:1;12553:2;12549;12542:14;12454:116;12598:22;;:::i;:::-;12649:10;;12633:27;;12704:12;;;12698:19;12680:16;;;12673:45;12762:12;;;12756:19;12738:16;;;12731:45;12789:20;;12417:12;;;;12829;;;;12384:467;;;12867:14;;;12860:29;;;;-1:-1:-1;12871:5:120;11272:1647;-1:-1:-1;;;;;;;11272:1647:120:o;12924:127::-;12985:10;12980:3;12976:20;12973:1;12966:31;13016:4;13013:1;13006:15;13040:4;13037:1;13030:15;13056:112;13088:1;13114;13104:35;;13119:18;;:::i;:::-;-1:-1:-1;13153:9:120;;13056:112::o;13173:120::-;13213:1;13239;13229:35;;13244:18;;:::i;:::-;-1:-1:-1;13278:9:120;;13173:120::o;13298:125::-;13338:4;13366:1;13363;13360:8;13357:34;;;13371:18;;:::i;:::-;-1:-1:-1;13408:9:120;;13298:125::o;13428:168::-;13468:7;13534:1;13530;13526:6;13522:14;13519:1;13516:21;13511:1;13504:9;13497:17;13493:45;13490:71;;;13541:18;;:::i;:::-;-1:-1:-1;13581:9:120;;13428:168::o;13912:393::-;-1:-1:-1;;;;;14114:32:120;;14096:51;;14183:2;14178;14163:18;;14156:30;;;-1:-1:-1;;14203:53:120;;14237:18;;14229:6;14203:53;:::i;:::-;14195:61;;14292:6;14287:2;14276:9;14272:18;14265:34;13912:393;;;;;;:::o;14310:263::-;14386:6;14394;14447:2;14435:9;14426:7;14422:23;14418:32;14415:52;;;14463:1;14460;14453:12;14415:52;14486:37;14513:9;14486:37;:::i;:::-;14476:47;;14563:2;14552:9;14548:18;14542:25;14532:35;;14310:263;;;;;:::o;14578:635::-;14682:6;14735:2;14723:9;14714:7;14710:23;14706:32;14703:52;;;14751:1;14748;14741:12;14703:52;14784:2;14778:9;14826:2;14818:6;14814:15;14895:6;14883:10;14880:22;-1:-1:-1;;;;;14847:10:120;14844:34;14841:62;14838:88;;;14906:18;;:::i;:::-;14946:10;14942:2;14935:22;;14987:9;14981:16;14973:6;14966:32;15052:2;15041:9;15037:18;15031:25;15026:2;15018:6;15014:15;15007:50;15100:2;15089:9;15085:18;15079:25;15113:30;15137:5;15113:30;:::i;:::-;15171:2;15159:15;;15152:30;15163:6;14578:635;-1:-1:-1;;;14578:635:120:o;15218:128::-;15258:3;15289:1;15285:6;15282:1;15279:13;15276:39;;;15295:18;;:::i;:::-;-1:-1:-1;15331:9:120;;15218:128::o;15351:291::-;15528:2;15517:9;15510:21;15491:4;15548:45;15589:2;15578:9;15574:18;15566:6;15548:45;:::i;16742:371::-;-1:-1:-1;;;;;;16927:33:120;;16915:46;;16984:13;;16897:3;;17006:61;16984:13;17056:1;17047:11;;17040:4;17028:17;;17006:61;:::i;:::-;17087:16;;;;17105:1;17083:24;;16742:371;-1:-1:-1;;;16742:371:120:o;17118:274::-;17247:3;17285:6;17279:13;17301:53;17347:6;17342:3;17335:4;17327:6;17323:17;17301:53;:::i;:::-;17370:16;;;;;17118:274;-1:-1:-1;;17118:274:120:o;17397:268::-;17436:7;17468:16;17511:2;17508:1;17504:10;17541:2;17538:1;17534:10;17597:3;17593:2;17589:12;17584:3;17581:21;17574:3;17567:11;17560:19;17556:47;17553:73;;;17606:18;;:::i;17670:175::-;17707:3;17751:4;17744:5;17740:16;17780:4;17771:7;17768:17;17765:43;;;17788:18;;:::i;:::-;17837:1;17824:15;;17670:175;-1:-1:-1;;17670:175:120:o;17850:277::-;17946:6;17999:2;17987:9;17978:7;17974:23;17970:32;17967:52;;;18015:1;18012;18005:12;17967:52;18047:9;18041:16;18066:31;18091:5;18066:31;:::i;18132:260::-;18171:7;18203:8;18238:2;18235:1;18231:10;18268:2;18265:1;18261:10;18324:3;18320:2;18316:12;18311:3;18308:21;18301:3;18294:11;18287:19;18283:47;18280:73;;;18333:18;;:::i;20217:348::-;20447:2;20436:9;20429:21;20410:4;20467:49;20512:2;20501:9;20497:18;20130:2;20118:15;;-1:-1:-1;;;20158:4:120;20149:14;;20142:36;20203:2;20194:12;;20053:159;20467:49;20459:57;;20552:6;20547:2;20536:9;20532:18;20525:34;20217:348;;;;:::o;20734:::-;20964:2;20953:9;20946:21;20927:4;20984:49;21029:2;21018:9;21014:18;20647:2;20635:15;;-1:-1:-1;;;20675:4:120;20666:14;;20659:36;20720:2;20711:12;;20570:159;21087:446;21337:2;21326:9;21319:21;21376:1;21371:2;21360:9;21356:18;21349:29;-1:-1:-1;;;21409:2:120;21398:9;21394:18;21387:35;21460:3;21453:4;21442:9;21438:20;21431:33;21300:4;21481:46;21522:3;21511:9;21507:19;21499:6;21481:46;:::i;21941:440::-;22191:2;22180:9;22173:21;22154:4;22217:49;22262:2;22251:9;22247:18;20130:2;20118:15;;-1:-1:-1;;;20158:4:120;20149:14;;20142:36;20203:2;20194:12;;20053:159;22217:49;22314:9;22306:6;22302:22;22297:2;22286:9;22282:18;22275:50;22342:33;22368:6;22360;22342:33;:::i;:::-;22334:41;21941:440;-1:-1:-1;;;;21941:440:120:o;22386:::-;22636:2;22625:9;22618:21;22599:4;22662:49;22707:2;22696:9;22692:18;20647:2;20635:15;;-1:-1:-1;;;20675:4:120;20666:14;;20659:36;20720:2;20711:12;;20570:159;23589:374;23819:2;23808:9;23801:21;23782:4;23839:49;23884:2;23873:9;23869:18;20130:2;20118:15;;-1:-1:-1;;;20158:4:120;20149:14;;20142:36;20203:2;20194:12;;20053:159;23839:49;-1:-1:-1;;;;;23924:32:120;;;;23919:2;23904:18;;;;23897:60;;;;-1:-1:-1;23831:57:120;23589:374::o;23968:::-;24198:2;24187:9;24180:21;24161:4;24218:49;24263:2;24252:9;24248:18;20647:2;20635:15;;-1:-1:-1;;;20675:4:120;20666:14;;20659:36;20720:2;20711:12;;20570:159;26890:317;-1:-1:-1;;;;;27067:32:120;;27049:51;;27136:2;27131;27116:18;;27109:30;;;-1:-1:-1;;27156:45:120;;27182:18;;27174:6;27156:45;:::i","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","testByPassRateLimit()":"4726a1f2","testCheckIfLimitExceeds()":"29a5809a","testCheckIfLimitExceedsUnsupportedToken()":"b9e3868e","testCheckIfLimitExceedsWithRemainingAmount()":"cdb1428f","testCheckIfLimitExceedsWithThreeTxns()":"cd400285","testCheckIfLimitExceedsWithTxn()":"f791d2c3","testEnableDisableRateLimiter()":"c9fd3708","testEvaluateRateLimit()":"c854ce45","testEvaluateRateLimitBigBatch()":"0f78dfbb","testEvaluateRateLimitExpiredTxs()":"16151552","testEvaluateRateLimitWithBatchContainingExpiredBlocks()":"0b718d14","testFuzz_CheckIfLimitExceeds(address,uint256)":"17fec1e4","testFuzz_DurationExpiryAndReset(uint256,uint256)":"9ee2bd25","testFuzz_EvaluateRateLimit(uint256)":"62d80dbc","testFuzz_MultipleTxsOverTime(uint8,uint256,uint8)":"cd4935b1","testFuzz_PriceFluctuationOverTime(uint8,uint256,uint256)":"f4b6c4de","testFuzz_SetRateLimitParams(uint256,uint256,uint64)":"f142f01b","testGetPrice()":"2a888735","testIncorrectBatchSizeRateLimitParams()":"b0c036e3","testIncorrectDurationRateLimitParams()":"7cf16910","testIncorrectMaxAmtRateLimitParams()":"6ea407ff","testSetPriceOracle()":"d6f393b9","testSetRateLimitParams()":"f9ae83a2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"testByPassRateLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckIfLimitExceeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckIfLimitExceedsUnsupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckIfLimitExceedsWithRemainingAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckIfLimitExceedsWithThreeTxns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckIfLimitExceedsWithTxn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEnableDisableRateLimiter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEvaluateRateLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEvaluateRateLimitBigBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEvaluateRateLimitExpiredTxs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEvaluateRateLimitWithBatchContainingExpiredBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testFuzz_CheckIfLimitExceeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numTxs\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testFuzz_DurationExpiryAndReset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"testFuzz_EvaluateRateLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"txCount\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"initialAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"blocksBetweenTx\",\"type\":\"uint8\"}],\"name\":\"testFuzz_MultipleTxsOverTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"txCount\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"initialPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialAmount\",\"type\":\"uint256\"}],\"name\":\"testFuzz_PriceFluctuationOverTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"batchSize\",\"type\":\"uint64\"}],\"name\":\"testFuzz_SetRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIncorrectBatchSizeRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIncorrectDurationRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIncorrectMaxAmtRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSetRateLimitParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/RateLimiter.t.sol\":\"RateLimiterTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d\",\"dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw\"]},\"src/interfaces/IRateLimiter.sol\":{\"keccak256\":\"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf\",\"dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg\"]},\"src/mixins/RateLimiter.sol\":{\"keccak256\":\"0x16d42446a94fcd000bc88b7c775e99b2d5632f313c26a948408d00e33fd4ce8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36daa4f8d96f817a108969aca7c9997bda88e70799f4e06ccec915213298e82b\",\"dweb:/ipfs/QmVZj6eL1CwFhEYsSUpKrtQLcZBHo8o7847bG5uCNddV3H\"]},\"test/RateLimiter.t.sol\":{\"keccak256\":\"0xa2a3ca096c2ca5c910fa12a26a75ee9bf8f796ca59b26cc0300a954205c28048\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e529290a269c5e25486f136e699fc80e5752ffd010fd21ba9aa8109b21f35a4d\",\"dweb:/ipfs/QmPQx9PL3ypyQh5FQjL4ujdbAgUohQHzV1cKKwy92PPxt6\"]},\"test/mocks/MockPriceAggregator.sol\":{\"keccak256\":\"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c\",\"dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"testByPassRateLimit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckIfLimitExceeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckIfLimitExceedsUnsupportedToken"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckIfLimitExceedsWithRemainingAmount"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckIfLimitExceedsWithThreeTxns"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckIfLimitExceedsWithTxn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEnableDisableRateLimiter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEvaluateRateLimit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEvaluateRateLimitBigBatch"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEvaluateRateLimitExpiredTxs"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEvaluateRateLimitWithBatchContainingExpiredBlocks"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_CheckIfLimitExceeds"},{"inputs":[{"internalType":"uint256","name":"numTxs","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_DurationExpiryAndReset"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_EvaluateRateLimit"},{"inputs":[{"internalType":"uint8","name":"txCount","type":"uint8"},{"internalType":"uint256","name":"initialAmount","type":"uint256"},{"internalType":"uint8","name":"blocksBetweenTx","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_MultipleTxsOverTime"},{"inputs":[{"internalType":"uint8","name":"txCount","type":"uint8"},{"internalType":"uint256","name":"initialPrice","type":"uint256"},{"internalType":"uint256","name":"initialAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_PriceFluctuationOverTime"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint64","name":"batchSize","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"testFuzz_SetRateLimitParams"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIncorrectBatchSizeRateLimitParams"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIncorrectDurationRateLimitParams"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIncorrectMaxAmtRateLimitParams"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetPriceOracle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSetRateLimitParams"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/RateLimiter.t.sol":"RateLimiterTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x377365159c46ddd5740696df2969ae9db69e2d8386ebb2e55ea997497d62a920","urls":["bzz-raw://33adfaac2b884db2dd37ee7c98f867774d0d910ff33206db6f3476fb8e0cb63d","dweb:/ipfs/QmWFWzrwnPzNsCk6pM53kVXv9fCivJQhKf4o2VeR2C6SLw"],"license":"MIT"},"src/interfaces/IRateLimiter.sol":{"keccak256":"0xaf9aa3ebef6ca3d2a1e82796f8f6e6bf8a6f7f980f05ca7b49bea6ba2159aaf4","urls":["bzz-raw://3bcb7944d3461ea40c5122c414c21fe18a3a43b2f4d5bbe49a072c1ce59597bf","dweb:/ipfs/QmNsvBnxtxMdoM9wdVWVedtC7uBy7U2qBvY66LtWyYbNbg"],"license":"MIT"},"src/mixins/RateLimiter.sol":{"keccak256":"0x16d42446a94fcd000bc88b7c775e99b2d5632f313c26a948408d00e33fd4ce8c","urls":["bzz-raw://36daa4f8d96f817a108969aca7c9997bda88e70799f4e06ccec915213298e82b","dweb:/ipfs/QmVZj6eL1CwFhEYsSUpKrtQLcZBHo8o7847bG5uCNddV3H"],"license":"MIT"},"test/RateLimiter.t.sol":{"keccak256":"0xa2a3ca096c2ca5c910fa12a26a75ee9bf8f796ca59b26cc0300a954205c28048","urls":["bzz-raw://e529290a269c5e25486f136e699fc80e5752ffd010fd21ba9aa8109b21f35a4d","dweb:/ipfs/QmPQx9PL3ypyQh5FQjL4ujdbAgUohQHzV1cKKwy92PPxt6"],"license":"MIT"},"test/mocks/MockPriceAggregator.sol":{"keccak256":"0x307c79a594f2b332a0a5cb4b1d4f0b9ee721a86ce70e5a3f19c150e2bc363ee1","urls":["bzz-raw://37481a9e593bd87a907f961c0779dd0d414a845456378d0288355be4bc21533c","dweb:/ipfs/QmQtHbaZgVfwk3CZRFJQJEdHa4UfqCDKaJg35NNH6JHmeo"],"license":"BUSL-1.1"}},"version":1},"id":84} \ No newline at end of file diff --git a/out/STMSetup.sol/STMSetup.json b/out/STMSetup.sol/STMSetup.json new file mode 100644 index 00000000..35fe7322 --- /dev/null +++ b/out/STMSetup.sol/STMSetup.json @@ -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":"metaCoinContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MetaCoin"}],"stateMutability":"view"},{"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":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b61d7bb80620006516000396000f3fe60806040523480156200001157600080fd5b5060043610620000c35760003560e01c806385226c81116200007a57806385226c811462000150578063916a17c61462000169578063b5508aa91462000173578063ba414fa6146200017d578063e20c9f711462000198578063fa7626d414620001a257600080fd5b80630a9254e414620000c85780631ed7831c14620000d45780633e5e3c2314620000f65780633f7286f414620001005780634b6bd8fd146200010a57806366d9a9a01462000137575b600080fd5b620000d2620001b0565b005b620000de62000bab565b604051620000ed919062001389565b60405180910390f35b620000de62000c0f565b620000de62000c71565b6045546200011e906001600160a01b031681565b6040516001600160a01b039091168152602001620000ed565b6200014162000cd3565b604051620000ed9190620013d8565b6200015a62000dc6565b604051620000ed9190620014ec565b6200014162000ea0565b6200015a62000f8a565b6200018762001064565b6040519015158152602001620000ed565b620000de62001199565b600054620001879060ff1681565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200020a57600080fd5b505af11580156200021f573d6000803e3d6000fd5b5050505060405162000231906200131a565b604051809103906000f0801580156200024e573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200027d9062001327565b604051809103906000f0801580156200029a573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620002cb9062001335565b6001600160a01b039091168152602001604051809103906000f080158015620002f8573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620003379062001343565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000374573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620003a99062001351565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003dd573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200044d57600080fd5b505af115801562000462573d6000803e3d6000fd5b5050505060405162000474906200135f565b604051809103906000f08015801562000491573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620004c29062001335565b6001600160a01b039091168152602001604051809103906000f080158015620004ef573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200051e906200136d565b604051809103906000f0801580156200053b573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620005709062001351565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620005a4573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200062d57600080fd5b505af115801562000642573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006a557600080fd5b505af1158015620006ba573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200070b57600080fd5b505af115801562000720573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f9150620007579060019060040162001552565b600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007ea57600080fd5b505af1158015620007ff573d6000803e3d6000fd5b50505050620008316040518060400160405280600b81526020016a6f70657261746f724f6e6560a81b815250620011fb565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b60208201526200088690620011fb565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b6020820152620008d690620011fb565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b60208201526200092c90620011fb565b604155603a80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693a32b9ba29b2b73232b960b11b60208201526200097b90620011fb565b604255603c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b3a32b9ba2932b1b2b4bb32b960a11b6020820152620009cc90620011fb565b604355603d80546001600160a01b0319166001600160a01b03928316179055603c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801562000a3c57600080fd5b505af115801562000a51573d6000803e3d6000fd5b5050603c54601f546040516001600160a01b0392831694509116915062000a78906200137b565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000aac573d6000803e3d6000fd5b50604580546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000aed90600401620016b2565b600060405180830381600087803b15801562000b0857600080fd5b505af115801562000b1d573d6000803e3d6000fd5b5050604554602580546001600160a01b0319166001600160a01b039092169190911790555050604080516390c5013b60e01b81529051737109709ecfa91a80626ff3989d68f67f5b1dd12d916390c5013b91600480830192600092919082900301818387803b15801562000b9057600080fd5b505af115801562000ba5573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000c0557602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000be6575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000c05576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000be6575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000c05576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000be6575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000da457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d655790505b5050505050815250508152602001906001019062000cf7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd57838290600052602060002001805462000e0c90620016e3565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3a90620016e3565b801562000e8b5780601f1062000e5f5761010080835404028352916020019162000e8b565b820191906000526020600020905b81548152906001019060200180831162000e6d57829003601f168201915b50505050508152602001906001019062000dea565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f7157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000f325790505b5050505050815250508152602001906001019062000ec4565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd57838290600052602060002001805462000fd090620016e3565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffe90620016e3565b80156200104f5780601f1062001023576101008083540402835291602001916200104f565b820191906000526020600020905b8154815290600101906020018083116200103157829003601f168201915b50505050508152602001906001019062000fae565b60008054610100900460ff1615620010855750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011945760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001116917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001720565b60408051601f1981840301815290829052620011329162001753565b6000604051808303816000865af19150503d806000811462001171576040519150601f19603f3d011682016040523d82523d6000602084013e62001176565b606091505b509150508080602001905181019062001190919062001771565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000c05576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000be6575050505050905090565b6000808260405160200162001211919062001753565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a391906200179c565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620012e19085908790600401620017c7565b600060405180830381600087803b158015620012fc57600080fd5b505af115801562001311573d6000803e3d6000fd5b50505050915091565b60df80620017f683390190565b61017980620018d583390190565b6107678062001a4e83390190565b615f0280620021b583390190565b610deb80620080b783390190565b6101788062008ea283390190565b613799806200901a83390190565b610fd3806200c7b383390190565b6020808252825182820181905260009190848201906040850190845b81811015620013cc5783516001600160a01b031683529284019291840191600101620013a5565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200148057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200146a5783516001600160e01b0319168252928b019260019290920191908b01906200143e565b50978a0197955050509187019160010162001400565b50919998505050505050505050565b60005b83811015620014ac57818101518382015260200162001492565b8381111562000ba55750506000910152565b60008151808452620014d88160208601602086016200148f565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200154557603f1988860301845262001532858351620014be565b9450928501929085019060010162001513565b5092979650505050505050565b6060815260006200157d60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b602081526000620016dd60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c90821680620016f857607f821691505b602082108114156200171a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620017458160048501602087016200148f565b919091016004019392505050565b60008251620017678184602087016200148f565b9190910192915050565b6000602082840312156200178457600080fd5b815180151581146200179557600080fd5b9392505050565b600060208284031215620017af57600080fd5b81516001600160a01b03811681146200179557600080fd5b6001600160a01b0383168152604060208201819052600090620017ed90830184620014be565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c003360806040523480156200001157600080fd5b5060405162000fd338038062000fd3833981016040819052620000349162000178565b6200003f336200007e565b6001600160a01b03821660009081526003602052604090206509184e72a00090556200006b81620000ce565b62000076826200007e565b5050620001b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000d8620000fa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620001595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b80516001600160a01b03811681146200017357600080fd5b919050565b600080604083850312156200018c57600080fd5b62000197836200015b565b9150620001a7602084016200015b565b90509250929050565b610e1380620001c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639b41bf23116100665780639b41bf231461012f578063c6cf634b14610142578063ee2453c614610157578063f2fde38b1461016a578063f8b2cb4f1461017d57600080fd5b806327e235e3146100a35780633998fdd3146100d65780636b4c991b14610101578063715018a6146101165780638da5cb5b1461011e575b600080fd5b6100c36100b13660046107fe565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6001546100e9906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b61011461010f366004610908565b6101a6565b005b610114610227565b6000546001600160a01b03166100e9565b61011461013d3660046107fe565b61023b565b61014a610265565b6040516100cd919061098a565b61011461016536600461099d565b6102f3565b6101146101783660046107fe565b6103bc565b6100c361018b3660046107fe565b6001600160a01b031660009081526003602052604090205490565b6101ae610435565b80516101c1906002906020840190610749565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b906101f290849060040161098a565b600060405180830381600087803b15801561020c57600080fd5b505af1158015610220573d6000803e3d6000fd5b5050505050565b61022f610435565b610239600061048f565b565b610243610435565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610272906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461029e906109fb565b80156102eb5780601f106102c0576101008083540402835291602001916102eb565b820191906000526020600020905b8154815290600101906020018083116102ce57829003601f168201915b505050505081565b6040516001600160a01b03841660248201526044810183905260009060640160408051601f198184030181529190526020810180516001600160e01b03166353e45cb560e11b179052905061035061034a83610aff565b826104df565b6103ac5760405162461bcd60e51b815260206004820152602260248201527f4d657461436f696e3a20756e617574686f72697a6564207472616e736163746960448201526137b760f11b60648201526084015b60405180910390fd5b6103b68484610655565b50505050565b6103c4610435565b6001600160a01b0381166104295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a3565b6104328161048f565b50565b6000546001600160a01b031633146102395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060405180610100016040528085600001518152602001336001600160a01b03168152602001306001600160a01b031681526020013481526020018481526020016002805461052f906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461055b906109fb565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050509183525050604080870180515163ffffffff16602080850191909152880151928201929092526001549151606088015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d9261060a928692600401610c8b565b6020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610d76565b949350505050565b336000908152600360205260409020548111156106b45760405162461bcd60e51b815260206004820152601e60248201527f4d657461436f696e3a20696e73756666696369656e742062616c616e6365000060448201526064016103a3565b33600090815260036020526040812080548392906106d3908490610dae565b90915550506001600160a01b03821660009081526003602052604081208054839290610700908490610dc5565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054610755906109fb565b90600052602060002090601f01602090048101928261077757600085556107bd565b82601f1061079057805160ff19168380011785556107bd565b828001600101855582156107bd579182015b828111156107bd5782518255916020019190600101906107a2565b506107c99291506107cd565b5090565b5b808211156107c957600081556001016107ce565b80356001600160a01b03811681146107f957600080fd5b919050565b60006020828403121561081057600080fd5b610819826107e2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561085957610859610820565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561088857610888610820565b604052919050565b600067ffffffffffffffff8311156108aa576108aa610820565b6108bd601f8401601f191660200161085f565b90508281528383830111156108d157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126108f957600080fd5b61081983833560208501610890565b60006020828403121561091a57600080fd5b813567ffffffffffffffff81111561093157600080fd5b61064d848285016108e8565b6000815180845260005b8181101561096357602081850181015186830182015201610947565b81811115610975576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610819602083018461093d565b6000806000606084860312156109b257600080fd5b6109bb846107e2565b925060208401359150604084013567ffffffffffffffff8111156109de57600080fd5b8401608081870312156109f057600080fd5b809150509250925092565b600181811c90821680610a0f57607f821691505b60208210811415610a3057634e487b7160e01b600052602260045260246000fd5b50919050565b600067ffffffffffffffff821115610a5057610a50610820565b5060051b60200190565b600082601f830112610a6b57600080fd5b81356020610a80610a7b83610a36565b61085f565b82815260059290921b84018101918181019086841115610a9f57600080fd5b8286015b84811015610af457803567ffffffffffffffff811115610ac35760008081fd5b8701603f81018913610ad55760008081fd5b610ae6898683013560408401610890565b845250918301918301610aa3565b509695505050505050565b600060808236031215610b1157600080fd5b610b19610836565b823567ffffffffffffffff80821115610b3157600080fd5b610b3d368387016108e8565b8352602091508185013582840152604085013581811115610b5d57600080fd5b850136601f820112610b6e57600080fd5b8035610b7c610a7b82610a36565b81815260059190911b82018401908481019036831115610b9b57600080fd5b928501925b82841015610bc057610bb1846107e2565b82529285019290850190610ba0565b60408701525050506060850135915080821115610bdc57600080fd5b50610be936828601610a5a565b60608301525092915050565b600081518084526020808501945080840160005b83811015610c2e5781516001600160a01b031687529582019590820190600101610c09565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015610c7e578383038952610c6c83835161093d565b98850198925090840190600101610c54565b5090979650505050505050565b6060815260008451610100806060850152610caa61016085018361093d565b91506020870151610cc660808601826001600160a01b03169052565b5060408701516001600160a01b031660a0850152606087015160c08501526080870151848303605f1990810160e0870152610d01848361093d565b935060a0890151915080868503018387015250610d1e838261093d565b9250505060c0860151610d3a61012085018263ffffffff169052565b5060e08601516101408401528281036020840152610d588186610bf5565b90508281036040840152610d6c8185610c39565b9695505050505050565b600060208284031215610d8857600080fd5b8151801515811461081957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610dc057610dc0610d98565b500390565b60008219821115610dd857610dd8610d98565b50019056fea2646970667358221220e3f74c6fee5ef6d14dc0a7a7584c1d1e744cfb0a789b6dfd7d9e8a7d8f82951964736f6c634300080c0033a264697066735822122041d8c19fde14ece671cea0ecb1c5af06468d85bd91bb9c3b3371c9790af511a764736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;181:2426:113;2329:22:116;;181:2426:113;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;181:2426:113;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;181:2426:113:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;181:2426:113;;;-1:-1:-1;181:2426:113;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;181:2426:113;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000c35760003560e01c806385226c81116200007a57806385226c811462000150578063916a17c61462000169578063b5508aa91462000173578063ba414fa6146200017d578063e20c9f711462000198578063fa7626d414620001a257600080fd5b80630a9254e414620000c85780631ed7831c14620000d45780633e5e3c2314620000f65780633f7286f414620001005780634b6bd8fd146200010a57806366d9a9a01462000137575b600080fd5b620000d2620001b0565b005b620000de62000bab565b604051620000ed919062001389565b60405180910390f35b620000de62000c0f565b620000de62000c71565b6045546200011e906001600160a01b031681565b6040516001600160a01b039091168152602001620000ed565b6200014162000cd3565b604051620000ed9190620013d8565b6200015a62000dc6565b604051620000ed9190620014ec565b6200014162000ea0565b6200015a62000f8a565b6200018762001064565b6040519015158152602001620000ed565b620000de62001199565b600054620001879060ff1681565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200020a57600080fd5b505af11580156200021f573d6000803e3d6000fd5b5050505060405162000231906200131a565b604051809103906000f0801580156200024e573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200027d9062001327565b604051809103906000f0801580156200029a573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620002cb9062001335565b6001600160a01b039091168152602001604051809103906000f080158015620002f8573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620003379062001343565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000374573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620003a99062001351565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003dd573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200044d57600080fd5b505af115801562000462573d6000803e3d6000fd5b5050505060405162000474906200135f565b604051809103906000f08015801562000491573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620004c29062001335565b6001600160a01b039091168152602001604051809103906000f080158015620004ef573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200051e906200136d565b604051809103906000f0801580156200053b573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e5460405191921690620005709062001351565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620005a4573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200062d57600080fd5b505af115801562000642573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006a557600080fd5b505af1158015620006ba573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200070b57600080fd5b505af115801562000720573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f9150620007579060019060040162001552565b600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007ea57600080fd5b505af1158015620007ff573d6000803e3d6000fd5b50505050620008316040518060400160405280600b81526020016a6f70657261746f724f6e6560a81b815250620011fb565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b60208201526200088690620011fb565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b6020820152620008d690620011fb565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b60208201526200092c90620011fb565b604155603a80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693a32b9ba29b2b73232b960b11b60208201526200097b90620011fb565b604255603c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b3a32b9ba2932b1b2b4bb32b960a11b6020820152620009cc90620011fb565b604355603d80546001600160a01b0319166001600160a01b03928316179055603c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801562000a3c57600080fd5b505af115801562000a51573d6000803e3d6000fd5b5050603c54601f546040516001600160a01b0392831694509116915062000a78906200137b565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000aac573d6000803e3d6000fd5b50604580546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000aed90600401620016b2565b600060405180830381600087803b15801562000b0857600080fd5b505af115801562000b1d573d6000803e3d6000fd5b5050604554602580546001600160a01b0319166001600160a01b039092169190911790555050604080516390c5013b60e01b81529051737109709ecfa91a80626ff3989d68f67f5b1dd12d916390c5013b91600480830192600092919082900301818387803b15801562000b9057600080fd5b505af115801562000ba5573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000c0557602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000be6575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000c05576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000be6575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000c05576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000be6575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000da457602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000d655790505b5050505050815250508152602001906001019062000cf7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd57838290600052602060002001805462000e0c90620016e3565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3a90620016e3565b801562000e8b5780601f1062000e5f5761010080835404028352916020019162000e8b565b820191906000526020600020905b81548152906001019060200180831162000e6d57829003601f168201915b50505050508152602001906001019062000dea565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000f7157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000f325790505b5050505050815250508152602001906001019062000ec4565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000dbd57838290600052602060002001805462000fd090620016e3565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffe90620016e3565b80156200104f5780601f1062001023576101008083540402835291602001916200104f565b820191906000526020600020905b8154815290600101906020018083116200103157829003601f168201915b50505050508152602001906001019062000fae565b60008054610100900460ff1615620010855750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620011945760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162001116917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001720565b60408051601f1981840301815290829052620011329162001753565b6000604051808303816000865af19150503d806000811462001171576040519150601f19603f3d011682016040523d82523d6000602084013e62001176565b606091505b509150508080602001905181019062001190919062001771565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000c05576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000be6575050505050905090565b6000808260405160200162001211919062001753565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a391906200179c565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620012e19085908790600401620017c7565b600060405180830381600087803b158015620012fc57600080fd5b505af115801562001311573d6000803e3d6000fd5b50505050915091565b60df80620017f683390190565b61017980620018d583390190565b6107678062001a4e83390190565b615f0280620021b583390190565b610deb80620080b783390190565b6101788062008ea283390190565b613799806200901a83390190565b610fd3806200c7b383390190565b6020808252825182820181905260009190848201906040850190845b81811015620013cc5783516001600160a01b031683529284019291840191600101620013a5565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200148057898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200146a5783516001600160e01b0319168252928b019260019290920191908b01906200143e565b50978a0197955050509187019160010162001400565b50919998505050505050505050565b60005b83811015620014ac57818101518382015260200162001492565b8381111562000ba55750506000910152565b60008151808452620014d88160208601602086016200148f565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200154557603f1988860301845262001532858351620014be565b9450928501929085019060010162001513565b5092979650505050505050565b6060815260006200157d60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b602081526000620016dd60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c90821680620016f857607f821691505b602082108114156200171a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620017458160048501602087016200148f565b919091016004019392505050565b60008251620017678184602087016200148f565b9190910192915050565b6000602082840312156200178457600080fd5b815180151581146200179557600080fd5b9392505050565b600060208284031215620017af57600080fd5b81516001600160a01b03811681146200179557600080fd5b6001600160a01b0383168152604060208201819052600090620017ed90830184620014be565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c003360806040523480156200001157600080fd5b5060405162000fd338038062000fd3833981016040819052620000349162000178565b6200003f336200007e565b6001600160a01b03821660009081526003602052604090206509184e72a00090556200006b81620000ce565b62000076826200007e565b5050620001b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000d8620000fa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620001595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b80516001600160a01b03811681146200017357600080fd5b919050565b600080604083850312156200018c57600080fd5b62000197836200015b565b9150620001a7602084016200015b565b90509250929050565b610e1380620001c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639b41bf23116100665780639b41bf231461012f578063c6cf634b14610142578063ee2453c614610157578063f2fde38b1461016a578063f8b2cb4f1461017d57600080fd5b806327e235e3146100a35780633998fdd3146100d65780636b4c991b14610101578063715018a6146101165780638da5cb5b1461011e575b600080fd5b6100c36100b13660046107fe565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6001546100e9906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b61011461010f366004610908565b6101a6565b005b610114610227565b6000546001600160a01b03166100e9565b61011461013d3660046107fe565b61023b565b61014a610265565b6040516100cd919061098a565b61011461016536600461099d565b6102f3565b6101146101783660046107fe565b6103bc565b6100c361018b3660046107fe565b6001600160a01b031660009081526003602052604090205490565b6101ae610435565b80516101c1906002906020840190610749565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b906101f290849060040161098a565b600060405180830381600087803b15801561020c57600080fd5b505af1158015610220573d6000803e3d6000fd5b5050505050565b61022f610435565b610239600061048f565b565b610243610435565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610272906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461029e906109fb565b80156102eb5780601f106102c0576101008083540402835291602001916102eb565b820191906000526020600020905b8154815290600101906020018083116102ce57829003601f168201915b505050505081565b6040516001600160a01b03841660248201526044810183905260009060640160408051601f198184030181529190526020810180516001600160e01b03166353e45cb560e11b179052905061035061034a83610aff565b826104df565b6103ac5760405162461bcd60e51b815260206004820152602260248201527f4d657461436f696e3a20756e617574686f72697a6564207472616e736163746960448201526137b760f11b60648201526084015b60405180910390fd5b6103b68484610655565b50505050565b6103c4610435565b6001600160a01b0381166104295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a3565b6104328161048f565b50565b6000546001600160a01b031633146102395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060405180610100016040528085600001518152602001336001600160a01b03168152602001306001600160a01b031681526020013481526020018481526020016002805461052f906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461055b906109fb565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050509183525050604080870180515163ffffffff16602080850191909152880151928201929092526001549151606088015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d9261060a928692600401610c8b565b6020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610d76565b949350505050565b336000908152600360205260409020548111156106b45760405162461bcd60e51b815260206004820152601e60248201527f4d657461436f696e3a20696e73756666696369656e742062616c616e6365000060448201526064016103a3565b33600090815260036020526040812080548392906106d3908490610dae565b90915550506001600160a01b03821660009081526003602052604081208054839290610700908490610dc5565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054610755906109fb565b90600052602060002090601f01602090048101928261077757600085556107bd565b82601f1061079057805160ff19168380011785556107bd565b828001600101855582156107bd579182015b828111156107bd5782518255916020019190600101906107a2565b506107c99291506107cd565b5090565b5b808211156107c957600081556001016107ce565b80356001600160a01b03811681146107f957600080fd5b919050565b60006020828403121561081057600080fd5b610819826107e2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561085957610859610820565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561088857610888610820565b604052919050565b600067ffffffffffffffff8311156108aa576108aa610820565b6108bd601f8401601f191660200161085f565b90508281528383830111156108d157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126108f957600080fd5b61081983833560208501610890565b60006020828403121561091a57600080fd5b813567ffffffffffffffff81111561093157600080fd5b61064d848285016108e8565b6000815180845260005b8181101561096357602081850181015186830182015201610947565b81811115610975576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610819602083018461093d565b6000806000606084860312156109b257600080fd5b6109bb846107e2565b925060208401359150604084013567ffffffffffffffff8111156109de57600080fd5b8401608081870312156109f057600080fd5b809150509250925092565b600181811c90821680610a0f57607f821691505b60208210811415610a3057634e487b7160e01b600052602260045260246000fd5b50919050565b600067ffffffffffffffff821115610a5057610a50610820565b5060051b60200190565b600082601f830112610a6b57600080fd5b81356020610a80610a7b83610a36565b61085f565b82815260059290921b84018101918181019086841115610a9f57600080fd5b8286015b84811015610af457803567ffffffffffffffff811115610ac35760008081fd5b8701603f81018913610ad55760008081fd5b610ae6898683013560408401610890565b845250918301918301610aa3565b509695505050505050565b600060808236031215610b1157600080fd5b610b19610836565b823567ffffffffffffffff80821115610b3157600080fd5b610b3d368387016108e8565b8352602091508185013582840152604085013581811115610b5d57600080fd5b850136601f820112610b6e57600080fd5b8035610b7c610a7b82610a36565b81815260059190911b82018401908481019036831115610b9b57600080fd5b928501925b82841015610bc057610bb1846107e2565b82529285019290850190610ba0565b60408701525050506060850135915080821115610bdc57600080fd5b50610be936828601610a5a565b60608301525092915050565b600081518084526020808501945080840160005b83811015610c2e5781516001600160a01b031687529582019590820190600101610c09565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015610c7e578383038952610c6c83835161093d565b98850198925090840190600101610c54565b5090979650505050505050565b6060815260008451610100806060850152610caa61016085018361093d565b91506020870151610cc660808601826001600160a01b03169052565b5060408701516001600160a01b031660a0850152606087015160c08501526080870151848303605f1990810160e0870152610d01848361093d565b935060a0890151915080868503018387015250610d1e838261093d565b9250505060c0860151610d3a61012085018263ffffffff169052565b5060e08601516101408401528281036020840152610d588186610bf5565b90508281036040840152610d6c8185610c39565b9695505050505050565b600060208284031215610d8857600080fd5b8151801515811461081957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610dc057610dc0610d98565b500390565b60008219821115610dd857610dd8610d98565b50019056fea2646970667358221220e3f74c6fee5ef6d14dc0a7a7584c1d1e744cfb0a789b6dfd7d9e8a7d8f82951964736f6c634300080c0033a264697066735822122041d8c19fde14ece671cea0ecb1c5af06468d85bd91bb9c3b3371c9790af511a764736f6c634300080c0033","sourceMap":"181:2426:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:2346;;;:::i;:::-;;2161:134:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;220:32:113:-;;;;;-1:-1:-1;;;;;220:32:113;;;;;;-1:-1:-1;;;;;859:32:120;;;841:51;;829:2;814:18;220:32:113;677:221:120;2447:178:26;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3976:14:120;;3969:22;3951:41;;3939:2;3924:18;1819:584:20;3811:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;259:2346:113;307:5;;293:20;;-1:-1:-1;;;293:20:113;;-1:-1:-1;;;;;307:5:113;;;293:20;;;841:51:120;293:13:113;;;;814:18:120;;293:20:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;341:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;323:15:113;:43;;-1:-1:-1;;;;;;323:43:113;-1:-1:-1;;;;;323:43:113;;;;;;;;;;394:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;376:15:113;:43;;-1:-1:-1;;;;;;376:43:113;-1:-1:-1;;;;;376:43:113;;;;;;474:5;;455:25;;474:5;;;455:25;;;:::i;:::-;-1:-1:-1;;;;;859:32:120;;;841:51;;829:2;814:18;455:25:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;430:22:113;:50;;-1:-1:-1;;;;;;430:50:113;-1:-1:-1;;;;;430:50:113;;;;;;570:15;;588:7;;605:15;;536:86;;570:15;;;;588:7;;;;605:15;;;536:86;;;:::i;:::-;-1:-1:-1;;;;;4469:15:120;;;4451:34;;4521:15;;;4516:2;4501:18;;4494:43;4573:15;;;4568:2;4553:18;;4546:43;4401:2;4386:18;536:86:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;490:31:113;:132;;-1:-1:-1;;;;;;490:132:113;-1:-1:-1;;;;;490:132:113;;;;;;;;;759:22;;695:88;;490:132;;759:22;;695:88;;;:::i;:::-;-1:-1:-1;;;;;4830:15:120;;;4812:34;;4882:15;;4877:2;4862:18;;4855:43;4762:2;4747:18;695:88:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:17:113;:162;;-1:-1:-1;;;;;;632:162:113;-1:-1:-1;;;;;632:162:113;;;;;;;;;864:14;;804:82;;-1:-1:-1;;;804:82:113;;841:4;804:82;;;5219:34:120;864:14:113;;5269:18:120;;;5262:43;-1:-1:-1;5321:18:120;;;5314:34;;;5364:18;;;5357:34;632:162:113;804:28;;5153:19:120;;804:82:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;897:13:113;:39;;-1:-1:-1;;;;;;897:39:113;-1:-1:-1;;;;;897:39:113;;;;;;987:5;;968:25;;987:5;;;968:25;;;:::i;:::-;-1:-1:-1;;;;;859:32:120;;;841:51;;829:2;814:18;968:25:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;946:19:113;:47;;-1:-1:-1;;;;;;946:47:113;-1:-1:-1;;;;;946:47:113;;;;;;;;;;1034:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:28:113;:51;;-1:-1:-1;;;;;;1003:51:113;-1:-1:-1;;;;;1003:51:113;;;;;;;;;1177:19;;1116:82;;1003:51;;1177:19;;1116:82;;;:::i;:::-;-1:-1:-1;;;;;4830:15:120;;;4812:34;;4882:15;;4877:2;4862:18;;4855:43;4762:2;4747:18;1116:82:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1064:14:113;:136;;-1:-1:-1;;;;;;1064:136:113;-1:-1:-1;;;;;1064:136:113;;;;;;;;;1276:10;;1308:17;;1348:13;;1210:263;;-1:-1:-1;;;1210:263:113;;1257:4;1210:263;;;5735:34:120;1276:10:113;;;5785:18:120;;;5778:43;1308:17:113;;;5837:18:120;;;5830:43;;;1348:13:113;;5889:18:120;;;5882:43;5941:19;;;5934:44;;;;-1:-1:-1;5994:19:120;;;5987:35;1064:136:113;1210:25;;5669:19:120;;1210:263:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1483:12:113;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1508:28:113;;-1:-1:-1;;;1508:28:113;;1530:4;1508:28;;;841:51:120;1508:13:113;;-1:-1:-1;1508:13:113;;-1:-1:-1;814:18:120;;1508:28:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1546:14:113;;:319;;-1:-1:-1;;;1546:319:113;;-1:-1:-1;;;;;1546:14:113;;;;-1:-1:-1;1546:27:113;;-1:-1:-1;1546:319:113;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1875:12:113;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:29;;;;;;;;;;;;;;-1:-1:-1;;;1931:29:113;;;:14;:29::i;:::-;1914:13;1900:60;1901:11;1900:60;;-1:-1:-1;;;;;;1900:60:113;-1:-1:-1;;;;;1900:60:113;;;;;;;;;;2011:34;;;;;;;;;;;;-1:-1:-1;;;2011:34:113;;;;;;:14;:34::i;:::-;1989:18;1970:75;1971:16;1970:75;;-1:-1:-1;;;;;;1970:75:113;-1:-1:-1;;;;;1970:75:113;;;;;;;;;;2086:29;;;;;;;;;;;;-1:-1:-1;;;2086:29:113;;;;;;:14;:29::i;:::-;2069:13;2055:60;;;2056:11;2055:60;;-1:-1:-1;;;;;;2055:60:113;-1:-1:-1;;;;;2055:60:113;;;;;;;;;;;2166:34;;;;;;;;;;;-1:-1:-1;;;2166:34:113;;;;;;:14;:34::i;:::-;2144:18;2125:75;2126:16;2125:75;;-1:-1:-1;;;;;;2125:75:113;-1:-1:-1;;;;;2125:75:113;;;;;;;;;;2240:28;;;;;;;;;;;;-1:-1:-1;;;2240:28:113;;;;;;:14;:28::i;:::-;2224:12;2211:57;2212:10;2211:57;;-1:-1:-1;;;;;;2211:57:113;-1:-1:-1;;;;;2211:57:113;;;;;;;;;;2311:30;;;;;;;;;;;;-1:-1:-1;;;2311:30:113;;;;;;:14;:30::i;:::-;2293:14;2278:63;2279:12;2278:63;;-1:-1:-1;;;;;;2278:63:113;-1:-1:-1;;;;;2278:63:113;;;;;;2366:10;;2352:25;;-1:-1:-1;;;2352:25:113;;2366:10;;2352:25;;;841:51:120;2352:13:113;;;;814:18:120;;2352:25:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2419:10:113;;2439:14;;2406:49;;-1:-1:-1;;;;;2419:10:113;;;;-1:-1:-1;2439:14:113;;;-1:-1:-1;2406:49:113;;;:::i;:::-;-1:-1:-1;;;;;4830:15:120;;;4812:34;;4882:15;;4877:2;4862:18;;4855:43;4762:2;4747:18;2406:49:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2387:16:113;:68;;-1:-1:-1;;;;;;2387:68:113;-1:-1:-1;;;;;2387:68:113;;;;;;;;;2465:40;;-1:-1:-1;;;2465:40:113;;:26;;:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2556:16:113;;2515:22;:59;;-1:-1:-1;;;;;;2515:59:113;-1:-1:-1;;;;;2556:16:113;;;2515:59;;;;;;-1:-1:-1;;2584:14:113;;;-1:-1:-1;;;2584:14:113;;;;:12;;;;:14;;;;;2556:16;;2584:14;;;;;;;2556:16;2584:12;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:2346::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;8368:51:120;;;-1:-1:-1;;;8435:18:120;;;8428:34;2196:43:20;;;;;;;;;8341:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;9837:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;9810:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;903:1569::-;1107:4;1136:2;1176;1165:9;1161:18;1206:2;1195:9;1188:21;1229:6;1264;1258:13;1295:6;1287;1280:22;1321:2;1311:12;;1354:2;1343:9;1339:18;1332:25;;1416:2;1406:6;1403:1;1399:14;1388:9;1384:30;1380:39;1454:2;1446:6;1442:15;1475:1;1496;1506:937;1522:6;1517:3;1514:15;1506:937;;;1591:22;;;-1:-1:-1;;1587:36:120;1575:49;;1647:13;;1734:9;;-1:-1:-1;;;;;1730:35:120;1715:51;;1805:11;;1799:18;1837:15;;;1830:27;;;1918:19;;1687:15;;;1950:24;;;2040:21;;;;2085:1;;2008:2;1996:15;;;2099:236;2115:8;2110:3;2107:17;2099:236;;;2196:15;;-1:-1:-1;;;;;;2192:42:120;2178:57;;2304:17;;;;2143:1;2134:11;;;;;2261:14;;;;2099:236;;;-1:-1:-1;2421:12:120;;;;2358:5;-1:-1:-1;;;2386:15:120;;;;1548:1;1539:11;1506:937;;;-1:-1:-1;2460:6:120;;903:1569;-1:-1:-1;;;;;;;;;903:1569:120:o;2477:258::-;2549:1;2559:113;2573:6;2570:1;2567:13;2559:113;;;2649:11;;;2643:18;2630:11;;;2623:39;2595:2;2588:10;2559:113;;;2690:6;2687:1;2684:13;2681:48;;;-1:-1:-1;;2725:1:120;2707:16;;2700:27;2477:258::o;2740:::-;2782:3;2820:5;2814:12;2847:6;2842:3;2835:19;2863:63;2919:6;2912:4;2907:3;2903:14;2896:4;2889:5;2885:16;2863:63;:::i;:::-;2980:2;2959:15;-1:-1:-1;;2955:29:120;2946:39;;;;2987:4;2942:50;;2740:258;-1:-1:-1;;2740:258:120:o;3003:803::-;3165:4;3194:2;3234;3223:9;3219:18;3264:2;3253:9;3246:21;3287:6;3322;3316:13;3353:6;3345;3338:22;3391:2;3380:9;3376:18;3369:25;;3453:2;3443:6;3440:1;3436:14;3425:9;3421:30;3417:39;3403:53;;3491:2;3483:6;3479:15;3512:1;3522:255;3536:6;3533:1;3530:13;3522:255;;;3629:2;3625:7;3613:9;3605:6;3601:22;3597:36;3592:3;3585:49;3657:40;3690:6;3681;3675:13;3657:40;:::i;:::-;3647:50;-1:-1:-1;3755:12:120;;;;3720:15;;;;3558:1;3551:9;3522:255;;;-1:-1:-1;3794:6:120;;3003:803;-1:-1:-1;;;;;;;3003:803:120:o;6197:1325::-;6536:2;6525:9;6518:21;6499:4;6562:49;6607:2;6596:9;6592:18;6110:2;6098:15;;-1:-1:-1;;;6138:4:120;6129:14;;6122:36;6183:2;6174:12;;6033:159;6562:49;6659:9;6651:6;6647:22;6642:2;6631:9;6627:18;6620:50;6694:3;6686:6;6679:19;6731:66;6726:2;6718:6;6714:15;6707:91;6831:66;6826:2;6818:6;6814:15;6807:91;6931:66;6926:2;6918:6;6914:15;6907:91;7032:66;7026:3;7018:6;7014:16;7007:92;7133:66;7127:3;7119:6;7115:16;7108:92;7234:66;7228:3;7220:6;7216:16;7209:92;7335:66;7329:3;7321:6;7317:16;7310:92;-1:-1:-1;;;7430:3:120;7422:6;7418:16;7411:29;7469:3;7461:6;7457:16;7449:24;;;7509:6;7504:2;7493:9;7489:18;7482:34;6197:1325;;;;:::o;7527:277::-;7729:2;7718:9;7711:21;7692:4;7749:49;7794:2;7783:9;7779:18;6110:2;6098:15;;-1:-1:-1;;;6138:4:120;6129:14;;6122:36;6183:2;6174:12;;6033:159;7749:49;7741:57;7527:277;-1:-1:-1;;7527:277:120:o;7809:380::-;7888:1;7884:12;;;;7931;;;7952:61;;8006:4;7998:6;7994:17;7984:27;;7952:61;8059:2;8051:6;8048:14;8028:18;8025:38;8022:161;;;8105:10;8100:3;8096:20;8093:1;8086:31;8140:4;8137:1;8130:15;8168:4;8165:1;8158:15;8022:161;;7809:380;;;:::o;8473:371::-;-1:-1:-1;;;;;;8658:33:120;;8646:46;;8715:13;;8628:3;;8737:61;8715:13;8787:1;8778:11;;8771:4;8759:17;;8737:61;:::i;:::-;8818:16;;;;8836:1;8814:24;;8473:371;-1:-1:-1;;;8473:371:120:o;8849:274::-;8978:3;9016:6;9010:13;9032:53;9078:6;9073:3;9066:4;9058:6;9054:17;9032:53;:::i;:::-;9101:16;;;;;8849:274;-1:-1:-1;;8849:274:120:o;9128:277::-;9195:6;9248:2;9236:9;9227:7;9223:23;9219:32;9216:52;;;9264:1;9261;9254:12;9216:52;9296:9;9290:16;9349:5;9342:13;9335:21;9328:5;9325:32;9315:60;;9371:1;9368;9361:12;9315:60;9394:5;9128:277;-1:-1:-1;;;9128:277:120:o;9873:290::-;9943:6;9996:2;9984:9;9975:7;9971:23;9967:32;9964:52;;;10012:1;10009;10002:12;9964:52;10038:16;;-1:-1:-1;;;;;10083:31:120;;10073:42;;10063:70;;10129:1;10126;10119:12;10168:317;-1:-1:-1;;;;;10345:32:120;;10327:51;;10414:2;10409;10394:18;;10387:30;;;-1:-1:-1;;10434:45:120;;10460:18;;10452:6;10434:45;:::i;:::-;10426:53;10168:317;-1:-1:-1;;;;10168:317:120:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","metaCoinContract()":"4b6bd8fd","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"metaCoinContract\",\"outputs\":[{\"internalType\":\"contract MetaCoin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/utility/STMSetup.sol\":\"STMSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/examples/MetaCoin.sol\":{\"keccak256\":\"0x56de72766d422d7bb6dd42a58a912f980594430931ea556b5029309d695ff1ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edbba28269669b655bf8145040e181d9457f9a627d64b3177255a8e2bf5adacb\",\"dweb:/ipfs/Qmaa8UEmxVUEwXvve774zAqVgCx8tTVVaKkRg1KyXWUbw5\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/helpers/DummyToken.sol\":{\"keccak256\":\"0xe3abac17e234bd69fd3de3d0d17a37e241f960e2fbe3f7aa04f9bf20731f0214\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://813357c48a7a344fcbd87760f3699d54b0a65b1fead858686057928056b3ba69\",\"dweb:/ipfs/QmbujERmmhaLvQxqvHJ8GjzTQGq7f7cdPrJTkDHgww3yZE\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/STMSetup.sol\":{\"keccak256\":\"0x9d627518235e863827479e8fdbb2bf6e5e491de46c6db7763a53b27e5bd422fb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://20cc6e834e7708021c092a023539934eaf3be4c5237354e499c17562a32980f4\",\"dweb:/ipfs/QmX9XGU8XYLgSKJc68eruHsBrzBYxYgVUKtypo5Zr3pp2s\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"view","type":"function","name":"metaCoinContract","outputs":[{"internalType":"contract MetaCoin","name":"","type":"address"}]},{"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[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/utility/STMSetup.sol":"STMSetup"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/examples/MetaCoin.sol":{"keccak256":"0x56de72766d422d7bb6dd42a58a912f980594430931ea556b5029309d695ff1ee","urls":["bzz-raw://edbba28269669b655bf8145040e181d9457f9a627d64b3177255a8e2bf5adacb","dweb:/ipfs/Qmaa8UEmxVUEwXvve774zAqVgCx8tTVVaKkRg1KyXWUbw5"],"license":"MIT"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/helpers/DummyToken.sol":{"keccak256":"0xe3abac17e234bd69fd3de3d0d17a37e241f960e2fbe3f7aa04f9bf20731f0214","urls":["bzz-raw://813357c48a7a344fcbd87760f3699d54b0a65b1fead858686057928056b3ba69","dweb:/ipfs/QmbujERmmhaLvQxqvHJ8GjzTQGq7f7cdPrJTkDHgww3yZE"],"license":"MIT"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/STMSetup.sol":{"keccak256":"0x9d627518235e863827479e8fdbb2bf6e5e491de46c6db7763a53b27e5bd422fb","urls":["bzz-raw://20cc6e834e7708021c092a023539934eaf3be4c5237354e499c17562a32980f4","dweb:/ipfs/QmX9XGU8XYLgSKJc68eruHsBrzBYxYgVUKtypo5Zr3pp2s"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":113} \ No newline at end of file diff --git a/out/STMTest.t.sol/STMTest.json b/out/STMTest.t.sol/STMTest.json new file mode 100644 index 00000000..44728671 --- /dev/null +++ b/out/STMTest.t.sol/STMTest.json @@ -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":"metaCoinContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MetaCoin"}],"stateMutability":"view"},{"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":"testHappyPathSwapWithSTM","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b61f05380620006516000396000f3fe60806040523480156200001157600080fd5b5060043610620000e05760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa9146200019a578063ba414fa614620001a4578063e20c9f7114620001bf578063fa7626d414620001c957600080fd5b806366d9a9a0146200015e57806385226c811462000177578063916a17c6146200019057600080fd5b80630a9254e414620000e55780631ed7831c14620000f15780633e5e3c2314620001135780633f7286f4146200011d5780634b6bd8fd1462000127578063503152d31462000154575b600080fd5b620000ef620001d7565b005b620000fb62000b96565b6040516200010a9190620026fd565b60405180910390f35b620000fb62000bfa565b620000fb62000c5c565b6045546200013b906001600160a01b031681565b6040516001600160a01b0390911681526020016200010a565b620000ef62000cbe565b6200016862001d2b565b6040516200010a91906200274c565b6200018162001e1e565b6040516200010a919062002860565b6200016862001ef8565b6200018162001fe2565b620001ae620020bc565b60405190151581526020016200010a565b620000fb620021e7565b600054620001ae9060ff1681565b6032546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206200ef93833981519152906306447d5690602401600060405180830381600087803b1580156200022c57600080fd5b505af115801562000241573d6000803e3d6000fd5b505050506040516200025390620025e8565b604051809103906000f08015801562000270573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200029f90620025f5565b604051809103906000f080158015620002bc573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620002ed9062002603565b6001600160a01b039091168152602001604051809103906000f0801580156200031a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620003599062002611565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000396573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620003cb906200261f565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003ff573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b8152919263eb990c59926200044e92309216906000908190600401620028c6565b600060405180830381600087803b1580156200046957600080fd5b505af11580156200047e573d6000803e3d6000fd5b5050505060405162000490906200262d565b604051809103906000f080158015620004ad573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620004de9062002603565b6001600160a01b039091168152602001604051809103906000f0801580156200050b573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200053a906200263b565b604051809103906000f08015801562000557573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e54604051919216906200058c906200261f565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620005c0573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200064957600080fd5b505af11580156200065e573d6000803e3d6000fd5b505050506000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006b057600080fd5b505af1158015620006c5573d6000803e3d6000fd5b50506040516303223eab60e11b81523060048201526000805160206200ef9383398151915292506306447d569150602401600060405180830381600087803b1580156200071157600080fd5b505af115801562000726573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200075d90600190600401620028ef565b600060405180830381600087803b1580156200077857600080fd5b505af11580156200078d573d6000803e3d6000fd5b505050506000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007df57600080fd5b505af1158015620007f4573d6000803e3d6000fd5b50505050620008266040518060400160405280600b81526020016a6f70657261746f724f6e6560a81b81525062002249565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b60208201526200087b9062002249565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b6020820152620008cb9062002249565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b6020820152620009219062002249565b604155603a80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693a32b9ba29b2b73232b960b11b6020820152620009709062002249565b604255603c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b3a32b9ba2932b1b2b4bb32b960a11b6020820152620009c19062002249565b604355603d80546001600160a01b0319166001600160a01b03928316179055603c546040516303223eab60e11b8152911660048201526000805160206200ef93833981519152906306447d5690602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050603c54601f546040516001600160a01b0392831694509116915062000a689062002649565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000a9c573d6000803e3d6000fd5b50604580546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000add9060040162002a4f565b600060405180830381600087803b15801562000af857600080fd5b505af115801562000b0d573d6000803e3d6000fd5b5050604554602580546001600160a01b0319166001600160a01b039092169190911790555050604080516390c5013b60e01b815290516000805160206200ef93833981519152916390c5013b91600480830192600092919082900301818387803b15801562000b7b57600080fd5b505af115801562000b90573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000bf057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bd1575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000bf0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bd1575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000bf0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bd1575050505050905090565b6040516303223eab60e11b81523060048201526000805160206200ef93833981519152906306447d5690602401600060405180830381600087803b15801562000d0657600080fd5b505af115801562000d1b573d6000803e3d6000fd5b50600092506002915062000d2c9050565b60405190808252806020026020018201604052801562000d56578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062000d7d5762000d7d62002a80565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062000db15762000db162002a80565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062000df0908490600401620026fd565b600060405180830381600087803b15801562000e0b57600080fd5b505af115801562000e20573d6000803e3d6000fd5b505050506000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e7257600080fd5b505af115801562000e87573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206200ef9383398151915291506306447d5690602401600060405180830381600087803b15801562000ee357600080fd5b505af115801562000ef8573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362000f76939283169291909116906000805160206200effe833981519152906509184e72a00090600401620028c6565b602060405180830381865afa15801562000f94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fba919062002a96565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206200ef938339815191529063e341eaa490604401606060405180830381865afa1580156200101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001041919062002ab0565b9250925092506000828285604051602001620010609392919062002aef565b60408051601f198184030181526060830182528083526000805160206200effe8339815191526020848101919091526509184e72a000928401929092528051909350602791620010b591839186019062002657565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e5990620010fd90899060040162002b12565b600060405180830381600087803b1580156200111857600080fd5b505af11580156200112d573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562001180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011a6919062002b6b565b915050620011ca816002811115620011c257620011c262002ba1565b60006200235e565b87156200123f57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200120a9291169060279060040162002bf4565b600060405180830381600087803b1580156200122557600080fd5b505af11580156200123a573d6000803e3d6000fd5b505050505b6000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200128d57600080fd5b505af1158015620012a2573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206200ef9383398151915292506306447d569150602401600060405180830381600087803b158015620012fb57600080fd5b505af115801562001310573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200138e939283169291909116906000805160206200effe833981519152906509184e72a00090600401620028c6565b602060405180830381865afa158015620013ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013d2919062002a96565b6040805490516338d07aa960e21b81529192506000805160206200ef938339815191529163e341eaa49162001414918590600401918252602082015260400190565b606060405180830381865afa15801562001432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001458919062002ab0565b60405192995090975095506200147790879087908a9060200162002aef565b60408051601f198184030181526060830182528083526000805160206200effe8339815191526020848101919091526509184e72a000928401929092528051909650602a91620014cc91839189019062002657565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200151490859060040162002b12565b600060405180830381600087803b1580156200152f57600080fd5b505af115801562001544573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562001594573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ba919062002b6b565b9350620015d79050836002811115620011c257620011c262002ba1565b8915620016bb5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206200ef938339815191529063ca669fa790602401600060405180830381600087803b1580156200163357600080fd5b505af115801562001648573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062001686929091169060279060040162002bf4565b600060405180830381600087803b158015620016a157600080fd5b505af1158015620016b6573d6000803e3d6000fd5b505050505b6000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200170957600080fd5b505af11580156200171e573d6000803e3d6000fd5b50505050600043606462001733919062002cd0565b60408051808201825260118152703ab734b8bab296b4b232b73a34b334b2b960791b602080830191909152825161010081018452828152603c546001600160a01b0390811682840152604554811682860152600060608301819052603d54865192166024830152600a6044808401829052875180850390910181526064909301875282850180516001600160e01b03166353e45cb560e11b1790526080840192909252855180870187528281526974657374506f6c69637960b01b9481019490945260a0830193909352600160c083015260e0820186905293516343c1246160e11b81529495509193909173__$08d83edc7d59a4a6fa41563ee7acf98327$__9163878248c291620018489160040162002cf7565b602060405180830381865af415801562001866573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200188c919062002a96565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206200ef938339815191529063ca669fa790602401600060405180830381600087803b158015620018e757600080fd5b505af1158015620018fc573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200193a929091169060279060040162002bf4565b600060405180830381600087803b1580156200195557600080fd5b505af11580156200196a573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206200ef938339815191529163e341eaa491620019b4918990600401918252602082015260400190565b606060405180830381865afa158015620019d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019f8919062002ab0565b92509250925081818460405160200162001a159392919062002aef565b60408051601f1981840301815260018084528383019092529550600091906020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908162001a5b57505060385483519192506001600160a01b031690839060009062001a965762001a9662002a80565b60200260200101906001600160a01b031690816001600160a01b031681525050858160008151811062001acd5762001acd62002a80565b602090810291909101810191909152604080516080810182528b81529182018c905281810184905260608201839052603c54905163ca669fa760e01b81526001600160a01b0390911660048201526000805160206200ef938339815191529063ca669fa790602401600060405180830381600087803b15801562001b5057600080fd5b505af115801562001b65573d6000803e3d6000fd5b5050604554603d5460405163771229e360e11b81526001600160a01b03928316945063ee2453c6935062001ba492909116908d90869060040162002e1b565b600060405180830381600087803b15801562001bbf57600080fd5b505af115801562001bd4573d6000803e3d6000fd5b5050604554603d5460405163f8b2cb4f60e01b81526001600160a01b03918216600482015262001c7294509116915063f8b2cb4f90602401602060405180830381865afa15801562001c2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c50919062002a96565b600a6040518060600160405280602d81526020016200ef66602d91396200248d565b604554603c5460405163f8b2cb4f60e01b81526001600160a01b03918216600482015262001d1392919091169063f8b2cb4f90602401602060405180830381865afa15801562001cc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cec919062002a96565b6509184e729ff66040518060600160405280602b81526020016200efb3602b91396200248d565b50505050505050505050505050505050505050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001e155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001dfc57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001dbd5790505b5050505050815250508152602001906001019062001d4f565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001e1557838290600052602060002001805462001e649062002bb7565b80601f016020809104026020016040519081016040528092919081815260200182805462001e929062002bb7565b801562001ee35780601f1062001eb75761010080835404028352916020019162001ee3565b820191906000526020600020905b81548152906001019060200180831162001ec557829003601f168201915b50505050508152602001906001019062001e42565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001e155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001fc957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001f8a5790505b5050505050815250508152602001906001019062001f1c565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001e15578382906000526020600020018054620020289062002bb7565b80601f0160208091040260200160405190810160405280929190818152602001828054620020569062002bb7565b8015620020a75780601f106200207b57610100808354040283529160200191620020a7565b820191906000526020600020905b8154815290600101906020018083116200208957829003601f168201915b50505050508152602001906001019062002006565b60008054610100900460ff1615620020dd5750600054610100900460ff1690565b60006000805160206200ef938339815191523b15620021e257604080516000805160206200ef93833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002164917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002ecf565b60408051601f1981840301815290829052620021809162002f02565b6000604051808303816000865af19150503d8060008114620021bf576040519150601f19603f3d011682016040523d82523d6000602084013e620021c4565b606091505b5091505080806020019051810190620021de919062002f20565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000bf0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bd1575050505050905090565b600080826040516020016200225f919062002f02565b60408051808303601f190181529082905280516020909101206001625e79b760e01b031982526004820181905291506000805160206200ef938339815191529063ffa1864990602401602060405180830381865afa158015620022c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ec919062002f4b565b6040516318caf8e360e31b81529092506000805160206200ef938339815191529063c657c7189062002325908590879060040162002f76565b600060405180830381600087803b1580156200234057600080fd5b505af115801562002355573d6000803e3d6000fd5b50505050915091565b80821462002489577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023d19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a162002489620024df565b5050565b818314620024da577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620024c6919062002fa4565b60405180910390a1620024da83836200235e565b505050565b6000805160206200ef938339815191523b15620025d757604080516000805160206200ef93833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002572929160200162002ecf565b60408051601f19818403018152908290526200258e9162002f02565b6000604051808303816000865af19150503d8060008114620025cd576040519150601f19603f3d011682016040523d82523d6000602084013e620025d2565b606091505b505050505b6000805461ff001916610100179055565b60df8062002fd683390190565b61017980620030b583390190565b610767806200322e83390190565b615f02806200399583390190565b610deb806200989783390190565b610178806200a68283390190565b613799806200a7fa83390190565b610fd3806200df9383390190565b828054620026659062002bb7565b90600052602060002090601f016020900481019282620026895760008555620026d4565b82601f10620026a457805160ff1916838001178555620026d4565b82800160010185558215620026d4579182015b82811115620026d4578251825591602001919060010190620026b7565b50620026e2929150620026e6565b5090565b5b80821115620026e25760008155600101620026e7565b6020808252825182820181905260009190848201906040850190845b81811015620027405783516001600160a01b03168352928401929184019160010162002719565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620027f457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620027de5783516001600160e01b0319168252928b019260019290920191908b0190620027b2565b50978a0197955050509187019160010162002774565b50919998505050505050505050565b60005b838110156200282057818101518382015260200162002806565b8381111562000b905750506000910152565b600081518084526200284c81602086016020860162002803565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620028b957603f19888603018452620028a685835162002832565b9450928501929085019060010162002887565b5092979650505050505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6060815260006200291a60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062002a7a60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121562002aa957600080fd5b5051919050565b60008060006060848603121562002ac657600080fd5b835160ff8116811462002ad857600080fd5b602085015160409095015190969495509392505050565b928352602083019190915260f81b6001600160f81b031916604082015260410190565b81516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff1691810191909152608060608201819052600c908201526b6d657461646174612075726960a01b60a082015260c00190565b6000806040838503121562002b7f57600080fd5b8251915060208301516003811062002b9657600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062002bcc57607f821691505b6020821081141562002bee57634e487b7160e01b600052602260045260246000fd5b50919050565b60018060a01b038316815260006020604081840152606060408401526000845481600182811c91508083168062002c2c57607f831692505b85831081141562002c4b57634e487b7160e01b85526022600452602485fd5b60a0880183905260c0880181801562002c6d576001811462002c7f5762002cac565b60ff1986168252878201965062002cac565b60008b81526020902060005b8681101562002ca65781548482015290850190890162002c8b565b83019750505b50505087015460608701525050600290940154608090930192909252509092915050565b6000821982111562002cf257634e487b7160e01b600052601160045260246000fd5b500190565b602081526000825161010080602085015262002d1861012085018362002832565b9150602085015162002d3560408601826001600160a01b03169052565b5060408501516001600160a01b038116606086015250606085015160808501526080850151601f19808685030160a087015262002d73848362002832565b935060a08701519150808685030160c08701525062002d93838262002832565b92505060c085015162002dae60e086018263ffffffff169052565b5060e0949094015192909301919091525090565b600081518084526020808501808196508360051b8101915082860160005b8581101562002e0e57828403895262002dfb84835162002832565b9885019893509084019060010162002de0565b5091979650505050505050565b600060018060a01b038086168352602085818501526060604085015284516080606086015262002e4f60e086018262002832565b8287015160808701526040870151605f19878303810160a0890152815180845291850193506000929091908501905b8084101562002ea25784518716825293850193600193909301929085019062002e7e565b5060608901519550818882030160c089015262002ec0818762002dc2565b9b9a5050505050505050505050565b6001600160e01b031983168152815160009062002ef481600485016020870162002803565b919091016004019392505050565b6000825162002f1681846020870162002803565b9190910192915050565b60006020828403121562002f3357600080fd5b8151801515811462002f4457600080fd5b9392505050565b60006020828403121562002f5e57600080fd5b81516001600160a01b038116811462002f4457600080fd5b6001600160a01b038316815260406020820181905260009062002f9c9083018462002832565b949350505050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002f4460808301846200283256fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c003360806040523480156200001157600080fd5b5060405162000fd338038062000fd3833981016040819052620000349162000178565b6200003f336200007e565b6001600160a01b03821660009081526003602052604090206509184e72a00090556200006b81620000ce565b62000076826200007e565b5050620001b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000d8620000fa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620001595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b80516001600160a01b03811681146200017357600080fd5b919050565b600080604083850312156200018c57600080fd5b62000197836200015b565b9150620001a7602084016200015b565b90509250929050565b610e1380620001c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639b41bf23116100665780639b41bf231461012f578063c6cf634b14610142578063ee2453c614610157578063f2fde38b1461016a578063f8b2cb4f1461017d57600080fd5b806327e235e3146100a35780633998fdd3146100d65780636b4c991b14610101578063715018a6146101165780638da5cb5b1461011e575b600080fd5b6100c36100b13660046107fe565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6001546100e9906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b61011461010f366004610908565b6101a6565b005b610114610227565b6000546001600160a01b03166100e9565b61011461013d3660046107fe565b61023b565b61014a610265565b6040516100cd919061098a565b61011461016536600461099d565b6102f3565b6101146101783660046107fe565b6103bc565b6100c361018b3660046107fe565b6001600160a01b031660009081526003602052604090205490565b6101ae610435565b80516101c1906002906020840190610749565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b906101f290849060040161098a565b600060405180830381600087803b15801561020c57600080fd5b505af1158015610220573d6000803e3d6000fd5b5050505050565b61022f610435565b610239600061048f565b565b610243610435565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610272906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461029e906109fb565b80156102eb5780601f106102c0576101008083540402835291602001916102eb565b820191906000526020600020905b8154815290600101906020018083116102ce57829003601f168201915b505050505081565b6040516001600160a01b03841660248201526044810183905260009060640160408051601f198184030181529190526020810180516001600160e01b03166353e45cb560e11b179052905061035061034a83610aff565b826104df565b6103ac5760405162461bcd60e51b815260206004820152602260248201527f4d657461436f696e3a20756e617574686f72697a6564207472616e736163746960448201526137b760f11b60648201526084015b60405180910390fd5b6103b68484610655565b50505050565b6103c4610435565b6001600160a01b0381166104295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a3565b6104328161048f565b50565b6000546001600160a01b031633146102395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060405180610100016040528085600001518152602001336001600160a01b03168152602001306001600160a01b031681526020013481526020018481526020016002805461052f906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461055b906109fb565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050509183525050604080870180515163ffffffff16602080850191909152880151928201929092526001549151606088015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d9261060a928692600401610c8b565b6020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610d76565b949350505050565b336000908152600360205260409020548111156106b45760405162461bcd60e51b815260206004820152601e60248201527f4d657461436f696e3a20696e73756666696369656e742062616c616e6365000060448201526064016103a3565b33600090815260036020526040812080548392906106d3908490610dae565b90915550506001600160a01b03821660009081526003602052604081208054839290610700908490610dc5565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054610755906109fb565b90600052602060002090601f01602090048101928261077757600085556107bd565b82601f1061079057805160ff19168380011785556107bd565b828001600101855582156107bd579182015b828111156107bd5782518255916020019190600101906107a2565b506107c99291506107cd565b5090565b5b808211156107c957600081556001016107ce565b80356001600160a01b03811681146107f957600080fd5b919050565b60006020828403121561081057600080fd5b610819826107e2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561085957610859610820565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561088857610888610820565b604052919050565b600067ffffffffffffffff8311156108aa576108aa610820565b6108bd601f8401601f191660200161085f565b90508281528383830111156108d157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126108f957600080fd5b61081983833560208501610890565b60006020828403121561091a57600080fd5b813567ffffffffffffffff81111561093157600080fd5b61064d848285016108e8565b6000815180845260005b8181101561096357602081850181015186830182015201610947565b81811115610975576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610819602083018461093d565b6000806000606084860312156109b257600080fd5b6109bb846107e2565b925060208401359150604084013567ffffffffffffffff8111156109de57600080fd5b8401608081870312156109f057600080fd5b809150509250925092565b600181811c90821680610a0f57607f821691505b60208210811415610a3057634e487b7160e01b600052602260045260246000fd5b50919050565b600067ffffffffffffffff821115610a5057610a50610820565b5060051b60200190565b600082601f830112610a6b57600080fd5b81356020610a80610a7b83610a36565b61085f565b82815260059290921b84018101918181019086841115610a9f57600080fd5b8286015b84811015610af457803567ffffffffffffffff811115610ac35760008081fd5b8701603f81018913610ad55760008081fd5b610ae6898683013560408401610890565b845250918301918301610aa3565b509695505050505050565b600060808236031215610b1157600080fd5b610b19610836565b823567ffffffffffffffff80821115610b3157600080fd5b610b3d368387016108e8565b8352602091508185013582840152604085013581811115610b5d57600080fd5b850136601f820112610b6e57600080fd5b8035610b7c610a7b82610a36565b81815260059190911b82018401908481019036831115610b9b57600080fd5b928501925b82841015610bc057610bb1846107e2565b82529285019290850190610ba0565b60408701525050506060850135915080821115610bdc57600080fd5b50610be936828601610a5a565b60608301525092915050565b600081518084526020808501945080840160005b83811015610c2e5781516001600160a01b031687529582019590820190600101610c09565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015610c7e578383038952610c6c83835161093d565b98850198925090840190600101610c54565b5090979650505050505050565b6060815260008451610100806060850152610caa61016085018361093d565b91506020870151610cc660808601826001600160a01b03169052565b5060408701516001600160a01b031660a0850152606087015160c08501526080870151848303605f1990810160e0870152610d01848361093d565b935060a0890151915080868503018387015250610d1e838261093d565b9250505060c0860151610d3a61012085018263ffffffff169052565b5060e08601516101408401528281036020840152610d588186610bf5565b90508281036040840152610d6c8185610c39565b9695505050505050565b600060208284031215610d8857600080fd5b8151801515811461081957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610dc057610dc0610d98565b500390565b60008219821115610dd857610dd8610d98565b50019056fea2646970667358221220e3f74c6fee5ef6d14dc0a7a7584c1d1e744cfb0a789b6dfd7d9e8a7d8f82951964736f6c634300080c003372656365697665722062616c616e63652073686f756c6420626520313020616674657220726563656976696e670000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d73656e6465722062616c616e63652073686f756c6420626520393930302061667465722073656e64696e67885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45a2646970667358221220166c713bfe92fb894e2715fd8e5cf186cc0da24aa8e114359e1fff95cdc67ac364736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;288:2236:85;2329:22:116;;288:2236:85;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;288:2236:85;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;288:2236:85:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;288:2236:85;;;-1:-1:-1;288:2236:85;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;288:2236:85;;;;;;","linkReferences":{"test/helpers/utility/TestUtils.sol":{"TestUtils":[{"start":7793,"length":20}]}}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000e05760003560e01c806366d9a9a01162000097578063b5508aa9116200006e578063b5508aa9146200019a578063ba414fa614620001a4578063e20c9f7114620001bf578063fa7626d414620001c957600080fd5b806366d9a9a0146200015e57806385226c811462000177578063916a17c6146200019057600080fd5b80630a9254e414620000e55780631ed7831c14620000f15780633e5e3c2314620001135780633f7286f4146200011d5780634b6bd8fd1462000127578063503152d31462000154575b600080fd5b620000ef620001d7565b005b620000fb62000b96565b6040516200010a9190620026fd565b60405180910390f35b620000fb62000bfa565b620000fb62000c5c565b6045546200013b906001600160a01b031681565b6040516001600160a01b0390911681526020016200010a565b620000ef62000cbe565b6200016862001d2b565b6040516200010a91906200274c565b6200018162001e1e565b6040516200010a919062002860565b6200016862001ef8565b6200018162001fe2565b620001ae620020bc565b60405190151581526020016200010a565b620000fb620021e7565b600054620001ae9060ff1681565b6032546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206200ef93833981519152906306447d5690602401600060405180830381600087803b1580156200022c57600080fd5b505af115801562000241573d6000803e3d6000fd5b505050506040516200025390620025e8565b604051809103906000f08015801562000270573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200029f90620025f5565b604051809103906000f080158015620002bc573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b03928316179055603254604051911690620002ed9062002603565b6001600160a01b039091168152602001604051809103906000f0801580156200031a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620003599062002611565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000396573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b5460405191921690620003cb906200261f565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003ff573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b8152919263eb990c59926200044e92309216906000908190600401620028c6565b600060405180830381600087803b1580156200046957600080fd5b505af11580156200047e573d6000803e3d6000fd5b5050505060405162000490906200262d565b604051809103906000f080158015620004ad573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b03928316179055603254604051911690620004de9062002603565b6001600160a01b039091168152602001604051809103906000f0801580156200050b573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b03929092169190911790556040516200053a906200263b565b604051809103906000f08015801562000557573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e54604051919216906200058c906200261f565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620005c0573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b1580156200064957600080fd5b505af11580156200065e573d6000803e3d6000fd5b505050506000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006b057600080fd5b505af1158015620006c5573d6000803e3d6000fd5b50506040516303223eab60e11b81523060048201526000805160206200ef9383398151915292506306447d569150602401600060405180830381600087803b1580156200071157600080fd5b505af115801562000726573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200075d90600190600401620028ef565b600060405180830381600087803b1580156200077857600080fd5b505af11580156200078d573d6000803e3d6000fd5b505050506000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007df57600080fd5b505af1158015620007f4573d6000803e3d6000fd5b50505050620008266040518060400160405280600b81526020016a6f70657261746f724f6e6560a81b81525062002249565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b60208201526200087b9062002249565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b6020820152620008cb9062002249565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b6020820152620009219062002249565b604155603a80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693a32b9ba29b2b73232b960b11b6020820152620009709062002249565b604255603c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b3a32b9ba2932b1b2b4bb32b960a11b6020820152620009c19062002249565b604355603d80546001600160a01b0319166001600160a01b03928316179055603c546040516303223eab60e11b8152911660048201526000805160206200ef93833981519152906306447d5690602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050603c54601f546040516001600160a01b0392831694509116915062000a689062002649565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000a9c573d6000803e3d6000fd5b50604580546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000add9060040162002a4f565b600060405180830381600087803b15801562000af857600080fd5b505af115801562000b0d573d6000803e3d6000fd5b5050604554602580546001600160a01b0319166001600160a01b039092169190911790555050604080516390c5013b60e01b815290516000805160206200ef93833981519152916390c5013b91600480830192600092919082900301818387803b15801562000b7b57600080fd5b505af115801562000b90573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000bf057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000bd1575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000bf0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bd1575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000bf0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bd1575050505050905090565b6040516303223eab60e11b81523060048201526000805160206200ef93833981519152906306447d5690602401600060405180830381600087803b15801562000d0657600080fd5b505af115801562000d1b573d6000803e3d6000fd5b50600092506002915062000d2c9050565b60405190808252806020026020018201604052801562000d56578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062000d7d5762000d7d62002a80565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062000db15762000db162002a80565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062000df0908490600401620026fd565b600060405180830381600087803b15801562000e0b57600080fd5b505af115801562000e20573d6000803e3d6000fd5b505050506000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000e7257600080fd5b505af115801562000e87573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206200ef9383398151915291506306447d5690602401600060405180830381600087803b15801562000ee357600080fd5b505af115801562000ef8573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362000f76939283169291909116906000805160206200effe833981519152906509184e72a00090600401620028c6565b602060405180830381865afa15801562000f94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fba919062002a96565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206200ef938339815191529063e341eaa490604401606060405180830381865afa1580156200101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001041919062002ab0565b9250925092506000828285604051602001620010609392919062002aef565b60408051601f198184030181526060830182528083526000805160206200effe8339815191526020848101919091526509184e72a000928401929092528051909350602791620010b591839186019062002657565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e5990620010fd90899060040162002b12565b600060405180830381600087803b1580156200111857600080fd5b505af11580156200112d573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562001180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011a6919062002b6b565b915050620011ca816002811115620011c257620011c262002ba1565b60006200235e565b87156200123f57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200120a9291169060279060040162002bf4565b600060405180830381600087803b1580156200122557600080fd5b505af11580156200123a573d6000803e3d6000fd5b505050505b6000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200128d57600080fd5b505af1158015620012a2573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206200ef9383398151915292506306447d569150602401600060405180830381600087803b158015620012fb57600080fd5b505af115801562001310573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200138e939283169291909116906000805160206200effe833981519152906509184e72a00090600401620028c6565b602060405180830381865afa158015620013ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013d2919062002a96565b6040805490516338d07aa960e21b81529192506000805160206200ef938339815191529163e341eaa49162001414918590600401918252602082015260400190565b606060405180830381865afa15801562001432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001458919062002ab0565b60405192995090975095506200147790879087908a9060200162002aef565b60408051601f198184030181526060830182528083526000805160206200effe8339815191526020848101919091526509184e72a000928401929092528051909650602a91620014cc91839189019062002657565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200151490859060040162002b12565b600060405180830381600087803b1580156200152f57600080fd5b505af115801562001544573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562001594573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ba919062002b6b565b9350620015d79050836002811115620011c257620011c262002ba1565b8915620016bb5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206200ef938339815191529063ca669fa790602401600060405180830381600087803b1580156200163357600080fd5b505af115801562001648573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062001686929091169060279060040162002bf4565b600060405180830381600087803b158015620016a157600080fd5b505af1158015620016b6573d6000803e3d6000fd5b505050505b6000805160206200efde83398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200170957600080fd5b505af11580156200171e573d6000803e3d6000fd5b50505050600043606462001733919062002cd0565b60408051808201825260118152703ab734b8bab296b4b232b73a34b334b2b960791b602080830191909152825161010081018452828152603c546001600160a01b0390811682840152604554811682860152600060608301819052603d54865192166024830152600a6044808401829052875180850390910181526064909301875282850180516001600160e01b03166353e45cb560e11b1790526080840192909252855180870187528281526974657374506f6c69637960b01b9481019490945260a0830193909352600160c083015260e0820186905293516343c1246160e11b81529495509193909173__$08d83edc7d59a4a6fa41563ee7acf98327$__9163878248c291620018489160040162002cf7565b602060405180830381865af415801562001866573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200188c919062002a96565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206200ef938339815191529063ca669fa790602401600060405180830381600087803b158015620018e757600080fd5b505af1158015620018fc573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200193a929091169060279060040162002bf4565b600060405180830381600087803b1580156200195557600080fd5b505af11580156200196a573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206200ef938339815191529163e341eaa491620019b4918990600401918252602082015260400190565b606060405180830381865afa158015620019d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019f8919062002ab0565b92509250925081818460405160200162001a159392919062002aef565b60408051601f1981840301815260018084528383019092529550600091906020808301908036833750506040805160018082528183019092529293506000929150602082015b606081526020019060019003908162001a5b57505060385483519192506001600160a01b031690839060009062001a965762001a9662002a80565b60200260200101906001600160a01b031690816001600160a01b031681525050858160008151811062001acd5762001acd62002a80565b602090810291909101810191909152604080516080810182528b81529182018c905281810184905260608201839052603c54905163ca669fa760e01b81526001600160a01b0390911660048201526000805160206200ef938339815191529063ca669fa790602401600060405180830381600087803b15801562001b5057600080fd5b505af115801562001b65573d6000803e3d6000fd5b5050604554603d5460405163771229e360e11b81526001600160a01b03928316945063ee2453c6935062001ba492909116908d90869060040162002e1b565b600060405180830381600087803b15801562001bbf57600080fd5b505af115801562001bd4573d6000803e3d6000fd5b5050604554603d5460405163f8b2cb4f60e01b81526001600160a01b03918216600482015262001c7294509116915063f8b2cb4f90602401602060405180830381865afa15801562001c2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c50919062002a96565b600a6040518060600160405280602d81526020016200ef66602d91396200248d565b604554603c5460405163f8b2cb4f60e01b81526001600160a01b03918216600482015262001d1392919091169063f8b2cb4f90602401602060405180830381865afa15801562001cc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cec919062002a96565b6509184e729ff66040518060600160405280602b81526020016200efb3602b91396200248d565b50505050505050505050505050505050505050505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001e155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001dfc57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001dbd5790505b5050505050815250508152602001906001019062001d4f565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001e1557838290600052602060002001805462001e649062002bb7565b80601f016020809104026020016040519081016040528092919081815260200182805462001e929062002bb7565b801562001ee35780601f1062001eb75761010080835404028352916020019162001ee3565b820191906000526020600020905b81548152906001019060200180831162001ec557829003601f168201915b50505050508152602001906001019062001e42565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001e155760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001fc957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001f8a5790505b5050505050815250508152602001906001019062001f1c565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001e15578382906000526020600020018054620020289062002bb7565b80601f0160208091040260200160405190810160405280929190818152602001828054620020569062002bb7565b8015620020a75780601f106200207b57610100808354040283529160200191620020a7565b820191906000526020600020905b8154815290600101906020018083116200208957829003601f168201915b50505050508152602001906001019062002006565b60008054610100900460ff1615620020dd5750600054610100900460ff1690565b60006000805160206200ef938339815191523b15620021e257604080516000805160206200ef93833981519152602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002164917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002ecf565b60408051601f1981840301815290829052620021809162002f02565b6000604051808303816000865af19150503d8060008114620021bf576040519150601f19603f3d011682016040523d82523d6000602084013e620021c4565b606091505b5091505080806020019051810190620021de919062002f20565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000bf0576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000bd1575050505050905090565b600080826040516020016200225f919062002f02565b60408051808303601f190181529082905280516020909101206001625e79b760e01b031982526004820181905291506000805160206200ef938339815191529063ffa1864990602401602060405180830381865afa158015620022c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022ec919062002f4b565b6040516318caf8e360e31b81529092506000805160206200ef938339815191529063c657c7189062002325908590879060040162002f76565b600060405180830381600087803b1580156200234057600080fd5b505af115801562002355573d6000803e3d6000fd5b50505050915091565b80821462002489577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620023d19060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a160408051818152600a81830152690808080808081319599d60b21b60608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a81830152690808080808149a59da1d60b21b60608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a162002489620024df565b5050565b818314620024da577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620024c6919062002fa4565b60405180910390a1620024da83836200235e565b505050565b6000805160206200ef938339815191523b15620025d757604080516000805160206200ef93833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002572929160200162002ecf565b60408051601f19818403018152908290526200258e9162002f02565b6000604051808303816000865af19150503d8060008114620025cd576040519150601f19603f3d011682016040523d82523d6000602084013e620025d2565b606091505b505050505b6000805461ff001916610100179055565b60df8062002fd683390190565b61017980620030b583390190565b610767806200322e83390190565b615f02806200399583390190565b610deb806200989783390190565b610178806200a68283390190565b613799806200a7fa83390190565b610fd3806200df9383390190565b828054620026659062002bb7565b90600052602060002090601f016020900481019282620026895760008555620026d4565b82601f10620026a457805160ff1916838001178555620026d4565b82800160010185558215620026d4579182015b82811115620026d4578251825591602001919060010190620026b7565b50620026e2929150620026e6565b5090565b5b80821115620026e25760008155600101620026e7565b6020808252825182820181905260009190848201906040850190845b81811015620027405783516001600160a01b03168352928401929184019160010162002719565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620027f457898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620027de5783516001600160e01b0319168252928b019260019290920191908b0190620027b2565b50978a0197955050509187019160010162002774565b50919998505050505050505050565b60005b838110156200282057818101518382015260200162002806565b8381111562000b905750506000910152565b600081518084526200284c81602086016020860162002803565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620028b957603f19888603018452620028a685835162002832565b9450928501929085019060010162002887565b5092979650505050505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6060815260006200291a60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062002a7a60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121562002aa957600080fd5b5051919050565b60008060006060848603121562002ac657600080fd5b835160ff8116811462002ad857600080fd5b602085015160409095015190969495509392505050565b928352602083019190915260f81b6001600160f81b031916604082015260410190565b81516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff1691810191909152608060608201819052600c908201526b6d657461646174612075726960a01b60a082015260c00190565b6000806040838503121562002b7f57600080fd5b8251915060208301516003811062002b9657600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062002bcc57607f821691505b6020821081141562002bee57634e487b7160e01b600052602260045260246000fd5b50919050565b60018060a01b038316815260006020604081840152606060408401526000845481600182811c91508083168062002c2c57607f831692505b85831081141562002c4b57634e487b7160e01b85526022600452602485fd5b60a0880183905260c0880181801562002c6d576001811462002c7f5762002cac565b60ff1986168252878201965062002cac565b60008b81526020902060005b8681101562002ca65781548482015290850190890162002c8b565b83019750505b50505087015460608701525050600290940154608090930192909252509092915050565b6000821982111562002cf257634e487b7160e01b600052601160045260246000fd5b500190565b602081526000825161010080602085015262002d1861012085018362002832565b9150602085015162002d3560408601826001600160a01b03169052565b5060408501516001600160a01b038116606086015250606085015160808501526080850151601f19808685030160a087015262002d73848362002832565b935060a08701519150808685030160c08701525062002d93838262002832565b92505060c085015162002dae60e086018263ffffffff169052565b5060e0949094015192909301919091525090565b600081518084526020808501808196508360051b8101915082860160005b8581101562002e0e57828403895262002dfb84835162002832565b9885019893509084019060010162002de0565b5091979650505050505050565b600060018060a01b038086168352602085818501526060604085015284516080606086015262002e4f60e086018262002832565b8287015160808701526040870151605f19878303810160a0890152815180845291850193506000929091908501905b8084101562002ea25784518716825293850193600193909301929085019062002e7e565b5060608901519550818882030160c089015262002ec0818762002dc2565b9b9a5050505050505050505050565b6001600160e01b031983168152815160009062002ef481600485016020870162002803565b919091016004019392505050565b6000825162002f1681846020870162002803565b9190910192915050565b60006020828403121562002f3357600080fd5b8151801515811462002f4457600080fd5b9392505050565b60006020828403121562002f5e57600080fd5b81516001600160a01b038116811462002f4457600080fd5b6001600160a01b038316815260406020820181905260009062002f9c9083018462002832565b949350505050565b60408152600560408201526422b93937b960d91b606082015260806020820152600062002f4460808301846200283256fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c003360806040523480156200001157600080fd5b5060405162000fd338038062000fd3833981016040819052620000349162000178565b6200003f336200007e565b6001600160a01b03821660009081526003602052604090206509184e72a00090556200006b81620000ce565b62000076826200007e565b5050620001b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000d8620000fa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620001595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b80516001600160a01b03811681146200017357600080fd5b919050565b600080604083850312156200018c57600080fd5b62000197836200015b565b9150620001a7602084016200015b565b90509250929050565b610e1380620001c06000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639b41bf23116100665780639b41bf231461012f578063c6cf634b14610142578063ee2453c614610157578063f2fde38b1461016a578063f8b2cb4f1461017d57600080fd5b806327e235e3146100a35780633998fdd3146100d65780636b4c991b14610101578063715018a6146101165780638da5cb5b1461011e575b600080fd5b6100c36100b13660046107fe565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6001546100e9906001600160a01b031681565b6040516001600160a01b0390911681526020016100cd565b61011461010f366004610908565b6101a6565b005b610114610227565b6000546001600160a01b03166100e9565b61011461013d3660046107fe565b61023b565b61014a610265565b6040516100cd919061098a565b61011461016536600461099d565b6102f3565b6101146101783660046107fe565b6103bc565b6100c361018b3660046107fe565b6001600160a01b031660009081526003602052604090205490565b6101ae610435565b80516101c1906002906020840190610749565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b906101f290849060040161098a565b600060405180830381600087803b15801561020c57600080fd5b505af1158015610220573d6000803e3d6000fd5b5050505050565b61022f610435565b610239600061048f565b565b610243610435565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610272906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461029e906109fb565b80156102eb5780601f106102c0576101008083540402835291602001916102eb565b820191906000526020600020905b8154815290600101906020018083116102ce57829003601f168201915b505050505081565b6040516001600160a01b03841660248201526044810183905260009060640160408051601f198184030181529190526020810180516001600160e01b03166353e45cb560e11b179052905061035061034a83610aff565b826104df565b6103ac5760405162461bcd60e51b815260206004820152602260248201527f4d657461436f696e3a20756e617574686f72697a6564207472616e736163746960448201526137b760f11b60648201526084015b60405180910390fd5b6103b68484610655565b50505050565b6103c4610435565b6001600160a01b0381166104295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a3565b6104328161048f565b50565b6000546001600160a01b031633146102395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060405180610100016040528085600001518152602001336001600160a01b03168152602001306001600160a01b031681526020013481526020018481526020016002805461052f906109fb565b80601f016020809104026020016040519081016040528092919081815260200182805461055b906109fb565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050509183525050604080870180515163ffffffff16602080850191909152880151928201929092526001549151606088015191516318cea58d60e01b81529394506001600160a01b03909216926318cea58d9261060a928692600401610c8b565b6020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d9190610d76565b949350505050565b336000908152600360205260409020548111156106b45760405162461bcd60e51b815260206004820152601e60248201527f4d657461436f696e3a20696e73756666696369656e742062616c616e6365000060448201526064016103a3565b33600090815260036020526040812080548392906106d3908490610dae565b90915550506001600160a01b03821660009081526003602052604081208054839290610700908490610dc5565b90915550506040518181526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054610755906109fb565b90600052602060002090601f01602090048101928261077757600085556107bd565b82601f1061079057805160ff19168380011785556107bd565b828001600101855582156107bd579182015b828111156107bd5782518255916020019190600101906107a2565b506107c99291506107cd565b5090565b5b808211156107c957600081556001016107ce565b80356001600160a01b03811681146107f957600080fd5b919050565b60006020828403121561081057600080fd5b610819826107e2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561085957610859610820565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561088857610888610820565b604052919050565b600067ffffffffffffffff8311156108aa576108aa610820565b6108bd601f8401601f191660200161085f565b90508281528383830111156108d157600080fd5b828260208301376000602084830101529392505050565b600082601f8301126108f957600080fd5b61081983833560208501610890565b60006020828403121561091a57600080fd5b813567ffffffffffffffff81111561093157600080fd5b61064d848285016108e8565b6000815180845260005b8181101561096357602081850181015186830182015201610947565b81811115610975576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610819602083018461093d565b6000806000606084860312156109b257600080fd5b6109bb846107e2565b925060208401359150604084013567ffffffffffffffff8111156109de57600080fd5b8401608081870312156109f057600080fd5b809150509250925092565b600181811c90821680610a0f57607f821691505b60208210811415610a3057634e487b7160e01b600052602260045260246000fd5b50919050565b600067ffffffffffffffff821115610a5057610a50610820565b5060051b60200190565b600082601f830112610a6b57600080fd5b81356020610a80610a7b83610a36565b61085f565b82815260059290921b84018101918181019086841115610a9f57600080fd5b8286015b84811015610af457803567ffffffffffffffff811115610ac35760008081fd5b8701603f81018913610ad55760008081fd5b610ae6898683013560408401610890565b845250918301918301610aa3565b509695505050505050565b600060808236031215610b1157600080fd5b610b19610836565b823567ffffffffffffffff80821115610b3157600080fd5b610b3d368387016108e8565b8352602091508185013582840152604085013581811115610b5d57600080fd5b850136601f820112610b6e57600080fd5b8035610b7c610a7b82610a36565b81815260059190911b82018401908481019036831115610b9b57600080fd5b928501925b82841015610bc057610bb1846107e2565b82529285019290850190610ba0565b60408701525050506060850135915080821115610bdc57600080fd5b50610be936828601610a5a565b60608301525092915050565b600081518084526020808501945080840160005b83811015610c2e5781516001600160a01b031687529582019590820190600101610c09565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015610c7e578383038952610c6c83835161093d565b98850198925090840190600101610c54565b5090979650505050505050565b6060815260008451610100806060850152610caa61016085018361093d565b91506020870151610cc660808601826001600160a01b03169052565b5060408701516001600160a01b031660a0850152606087015160c08501526080870151848303605f1990810160e0870152610d01848361093d565b935060a0890151915080868503018387015250610d1e838261093d565b9250505060c0860151610d3a61012085018263ffffffff169052565b5060e08601516101408401528281036020840152610d588186610bf5565b90508281036040840152610d6c8185610c39565b9695505050505050565b600060208284031215610d8857600080fd5b8151801515811461081957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610dc057610dc0610d98565b500390565b60008219821115610dd857610dd8610d98565b50019056fea2646970667358221220e3f74c6fee5ef6d14dc0a7a7584c1d1e744cfb0a789b6dfd7d9e8a7d8f82951964736f6c634300080c003372656365697665722062616c616e63652073686f756c6420626520313020616674657220726563656976696e670000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d73656e6465722062616c616e63652073686f756c6420626520393930302061667465722073656e64696e67885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45a2646970667358221220166c713bfe92fb894e2715fd8e5cf186cc0da24aa8e114359e1fff95cdc67ac364736f6c634300080c0033","sourceMap":"288:2236:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:2346:113;;;:::i;:::-;;2161:134:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;220:32:113:-;;;;;-1:-1:-1;;;;;220:32:113;;;;;;-1:-1:-1;;;;;1134:32:120;;;1116:51;;1104:2;1089:18;220:32:113;952:221:120;639:1883:85;;;:::i;2447:178:26:-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;4251:14:120;;4244:22;4226:41;;4214:2;4199:18;1819:584:20;4086:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;259:2346:113;307:5;;293:20;;-1:-1:-1;;;293:20:113;;-1:-1:-1;;;;;307:5:113;;;293:20;;;1116:51:120;-1:-1:-1;;;;;;;;;;;293:13:113;;;1089:18:120;;293:20:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;341:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;323:15:113;:43;;-1:-1:-1;;;;;;323:43:113;-1:-1:-1;;;;;323:43:113;;;;;;;;;;394:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;376:15:113;:43;;-1:-1:-1;;;;;;376:43:113;-1:-1:-1;;;;;376:43:113;;;;;;474:5;;455:25;;474:5;;;455:25;;;:::i;:::-;-1:-1:-1;;;;;1134:32:120;;;1116:51;;1104:2;1089:18;455:25:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;430:22:113;:50;;-1:-1:-1;;;;;;430:50:113;-1:-1:-1;;;;;430:50:113;;;;;;570:15;;588:7;;605:15;;536:86;;570:15;;;;588:7;;;;605:15;;;536:86;;;:::i;:::-;-1:-1:-1;;;;;4744:15:120;;;4726:34;;4796:15;;;4791:2;4776:18;;4769:43;4848:15;;;4843:2;4828:18;;4821:43;4676:2;4661:18;536:86:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;490:31:113;:132;;-1:-1:-1;;;;;;490:132:113;-1:-1:-1;;;;;490:132:113;;;;;;;;;759:22;;695:88;;490:132;;759:22;;695:88;;;:::i;:::-;-1:-1:-1;;;;;5105:15:120;;;5087:34;;5157:15;;5152:2;5137:18;;5130:43;5037:2;5022:18;695:88:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:17:113;:162;;-1:-1:-1;;;;;;632:162:113;-1:-1:-1;;;;;632:162:113;;;;;;;;;864:14;;804:82;;-1:-1:-1;;;804:82:113;;632:162;;804:28;;:82;;841:4;;864:14;;-1:-1:-1;;;;804:82:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;897:13:113;:39;;-1:-1:-1;;;;;;897:39:113;-1:-1:-1;;;;;897:39:113;;;;;;987:5;;968:25;;987:5;;;968:25;;;:::i;:::-;-1:-1:-1;;;;;1134:32:120;;;1116:51;;1104:2;1089:18;968:25:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;946:19:113;:47;;-1:-1:-1;;;;;;946:47:113;-1:-1:-1;;;;;946:47:113;;;;;;;;;;1034:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:28:113;:51;;-1:-1:-1;;;;;;1003:51:113;-1:-1:-1;;;;;1003:51:113;;;;;;;;;1177:19;;1116:82;;1003:51;;1177:19;;1116:82;;;:::i;:::-;-1:-1:-1;;;;;5105:15:120;;;5087:34;;5157:15;;5152:2;5137:18;;5130:43;5037:2;5022:18;1116:82:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1064:14:113;:136;;-1:-1:-1;;;;;;1064:136:113;-1:-1:-1;;;;;1064:136:113;;;;;;;;;1276:10;;1308:17;;1348:13;;1210:263;;-1:-1:-1;;;1210:263:113;;1257:4;1210:263;;;6010:34:120;1276:10:113;;;6060:18:120;;;6053:43;1308:17:113;;;6112:18:120;;;6105:43;;;1348:13:113;;6164:18:120;;;6157:43;6216:19;;;6209:44;;;;-1:-1:-1;6269:19:120;;;6262:35;1064:136:113;1210:25;;5944:19:120;;1210:263:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1483:12:113;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1508:28:113;;-1:-1:-1;;;1508:28:113;;1530:4;1508:28;;;1116:51:120;-1:-1:-1;;;;;;;;;;;1508:13:113;-1:-1:-1;1508:13:113;;-1:-1:-1;1089:18:120;;1508:28:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1546:14:113;;:319;;-1:-1:-1;;;1546:319:113;;-1:-1:-1;;;;;1546:14:113;;;;-1:-1:-1;1546:27:113;;-1:-1:-1;1546:319:113;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1875:12:113;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:29;;;;;;;;;;;;;;-1:-1:-1;;;1931:29:113;;;:14;:29::i;:::-;1914:13;1900:60;1901:11;1900:60;;-1:-1:-1;;;;;;1900:60:113;-1:-1:-1;;;;;1900:60:113;;;;;;;;;;2011:34;;;;;;;;;;;;-1:-1:-1;;;2011:34:113;;;;;;:14;:34::i;:::-;1989:18;1970:75;1971:16;1970:75;;-1:-1:-1;;;;;;1970:75:113;-1:-1:-1;;;;;1970:75:113;;;;;;;;;;2086:29;;;;;;;;;;;;-1:-1:-1;;;2086:29:113;;;;;;:14;:29::i;:::-;2069:13;2055:60;;;2056:11;2055:60;;-1:-1:-1;;;;;;2055:60:113;-1:-1:-1;;;;;2055:60:113;;;;;;;;;;;2166:34;;;;;;;;;;;-1:-1:-1;;;2166:34:113;;;;;;:14;:34::i;:::-;2144:18;2125:75;2126:16;2125:75;;-1:-1:-1;;;;;;2125:75:113;-1:-1:-1;;;;;2125:75:113;;;;;;;;;;2240:28;;;;;;;;;;;;-1:-1:-1;;;2240:28:113;;;;;;:14;:28::i;:::-;2224:12;2211:57;2212:10;2211:57;;-1:-1:-1;;;;;;2211:57:113;-1:-1:-1;;;;;2211:57:113;;;;;;;;;;2311:30;;;;;;;;;;;;-1:-1:-1;;;2311:30:113;;;;;;:14;:30::i;:::-;2293:14;2278:63;2279:12;2278:63;;-1:-1:-1;;;;;;2278:63:113;-1:-1:-1;;;;;2278:63:113;;;;;;2366:10;;2352:25;;-1:-1:-1;;;2352:25:113;;2366:10;;2352:25;;;1116:51:120;-1:-1:-1;;;;;;;;;;;2352:13:113;;;1089:18:120;;2352:25:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2419:10:113;;2439:14;;2406:49;;-1:-1:-1;;;;;2419:10:113;;;;-1:-1:-1;2439:14:113;;;-1:-1:-1;2406:49:113;;;:::i;:::-;-1:-1:-1;;;;;5105:15:120;;;5087:34;;5157:15;;5152:2;5137:18;;5130:43;5037:2;5022:18;2406:49:113;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2387:16:113;:68;;-1:-1:-1;;;;;;2387:68:113;-1:-1:-1;;;;;2387:68:113;;;;;;;;;2465:40;;-1:-1:-1;;;2465:40:113;;:26;;:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2556:16:113;;2515:22;:59;;-1:-1:-1;;;;;;2515:59:113;-1:-1:-1;;;;;2556:16:113;;;2515:59;;;;;;-1:-1:-1;;2584:14:113;;;-1:-1:-1;;;2584:14:113;;;;-1:-1:-1;;;;;;;;;;;2584:12:113;;;:14;;;;;2556:16;;2584:14;;;;;;;2556:16;2584:12;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:2346::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;639:1883:85:-;376:28;;-1:-1:-1;;;376:28:85;;398:4;376:28;;;1116:51:120;-1:-1:-1;;;;;;;;;;;376:13:85;;;1089:18:120;;376:28:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;414:26:85;;-1:-1:-1;457:1:85;;-1:-1:-1;443:16:85;;-1:-1:-1;443:16:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;443:16:85;-1:-1:-1;484:11:85;;469:12;;414:45;;-1:-1:-1;;;;;;484:11:85;;414:45;;484:11;;469:12;;;;:::i;:::-;-1:-1:-1;;;;;469:26:85;;;:12;;;;;;;;;:26;520:11;;505:12;;520:11;;;505:9;;520:11;;505:12;;;;;;:::i;:::-;-1:-1:-1;;;;;505:26:85;;;:12;;;;;;;;;:26;541:14;;:50;;-1:-1:-1;;;541:50:85;;:14;;;:39;;:50;;581:9;;541:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;601:12:85;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;1116:51:120::0;729:5:85::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;1089:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9184:25:120::0;;;;9225:18;;;9218:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9157:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;1116:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;1089:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;:::-;1262:1;1236:8;:28::i;:::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;1116:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;1089:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9184:25:120::0;;;9240:2;9225:18;;9218:34;9172:2;9157:18;;9010:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;1116:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;1089:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;1116:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;1089:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;746:21:85::2;770:12;785:3;770:18;;;;:::i;:::-;798:42;::::0;;;;::::2;::::0;;::::2;::::0;;-1:-1:-1;;;798:42:85::2;::::0;;::::2;::::0;;;;937:413;;::::2;::::0;::::2;::::0;;;;;1003:10:::2;::::0;-1:-1:-1;;;;;1003:10:85;;::::2;937:413:::0;;::::2;::::0;1047:16:::2;::::0;;::::2;937:413:::0;;;;-1:-1:-1;937:413:85;;;;;;1181:12:::2;::::0;1127:75;;1181:12;::::2;1127:75;::::0;::::2;13718:51:120::0;867:2:85::2;13785:18:120::0;;;;13778:34;;;1127:75:85;;;;;;;;;;13691:18:120;;;;1127:75:85;;;;::::2;::::0;;-1:-1:-1;;;;;1127:75:85::2;-1:-1:-1::0;;;1127:75:85::2;::::0;;937:413;;;;;;;;;;;::::2;::::0;;;;;-1:-1:-1;;;937:413:85;;::::2;::::0;;;;;;;;;;;1282:1:::2;937:413:::0;;;;;;;;;;902:458;;-1:-1:-1;;;902:458:85;;937:413;;-1:-1:-1;798:42:85;;-1:-1:-1;;902:9:85::2;::::0;:21:::2;::::0;:458:::2;::::0;::::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1464:11;::::0;1455:21:::2;::::0;-1:-1:-1;;;1455:21:85;;-1:-1:-1;;;;;1464:11:85;;::::2;1455:21;::::0;::::2;1116:51:120::0;880:480:85;;-1:-1:-1;1371:22:85::2;::::0;-1:-1:-1;;;;;;;;;;;1455:8:85;::::2;::::0;1089:18:120;;1455:21:85::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;1486:14:85::2;::::0;1523:16:::2;::::0;1486:73:::2;::::0;-1:-1:-1;;;1486:73:85;;-1:-1:-1;;;;;1486:14:85;;::::2;::::0;-1:-1:-1;1486:36:85::2;::::0;-1:-1:-1;1486:73:85::2;::::0;1523:16;;::::2;::::0;1541:17:::2;::::0;1486:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;1611:18:85::2;::::0;1603:40:::2;::::0;-1:-1:-1;;;1603:40:85;;1570:7:::2;::::0;-1:-1:-1;1570:7:85;;-1:-1:-1;1570:7:85;;-1:-1:-1;;;;;;;;;;;1603:7:85;::::2;::::0;:40:::2;::::0;1631:11;;1603:40:::2;;9184:25:120::0;;;9240:2;9225:18;;9218:34;9172:2;9157:18;;9010:248;1603:40:85::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1569:74;;;;;;1682:1;1685;1688;1665:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;1665:25:85;;::::2;::::0;;;1768:1:::2;1754:16:::0;;;;;::::2;::::0;;;1665:25;-1:-1:-1;1719:32:85::2;::::0;1665:25;1754:16:::2;::::0;;::::2;::::0;;::::2;::::0;::::2;-1:-1:-1::0;;1816:14:85::2;::::0;;1828:1:::2;1816:14:::0;;;;;::::2;::::0;;;1719:51;;-1:-1:-1;1780:33:85::2;::::0;1816:14;-1:-1:-1;1816:14:85::2;::::0;::::2;;;;;;;;;;;;;;;-1:-1:-1::0;;1861:16:85::2;::::0;1840:18;;1780:50;;-1:-1:-1;;;;;;1861:16:85::2;::::0;1840:18;;1861:16:::2;::::0;1840:18:::2;;;;:::i;:::-;;;;;;:37;-1:-1:-1::0;;;;;1840:37:85::2;;;-1:-1:-1::0;;;;;1840:37:85::2;;;::::0;::::2;1911:9;1887:18;1906:1;1887:21;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;:33;;;;1964:194:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;;;;;;;;;;;;;;;2177:10:::2;::::0;2168:20;;-1:-1:-1;;;2168:20:85;;-1:-1:-1;;;;;2177:10:85;;::::2;2168:20;::::0;::::2;1116:51:120::0;-1:-1:-1;;;;;;;;;;;2168:8:85;::::2;::::0;1089:18:120;;2168:20:85::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2198:16:85::2;::::0;2224:12:::2;::::0;2198:56:::2;::::0;-1:-1:-1;;;2198:56:85;;-1:-1:-1;;;;;2198:16:85;;::::2;::::0;-1:-1:-1;2198:25:85::2;::::0;-1:-1:-1;2198:56:85::2;::::0;2224:12;;::::2;::::0;2238:6;;2246:7;;2198:56:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2273:16:85::2;::::0;2301:12:::2;::::0;2273:41:::2;::::0;-1:-1:-1;;;2273:41:85;;-1:-1:-1;;;;;2301:12:85;;::::2;2273:41;::::0;::::2;1116:51:120::0;2264:104:85::2;::::0;-1:-1:-1;2273:16:85;::::2;::::0;-1:-1:-1;2273:27:85::2;::::0;1089:18:120;;2273:41:85::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2316:2;2264:104;;;;;;;;;;;;;;;;;:8;:104::i;:::-;2400:16;::::0;2428:10:::2;::::0;2400:39:::2;::::0;-1:-1:-1;;;2400:39:85;;-1:-1:-1;;;;;2428:10:85;;::::2;2400:39;::::0;::::2;1116:51:120::0;2378:137:85::2;::::0;2400:16;;;::::2;::::0;:27:::2;::::0;1089:18:120;;2400:39:85::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2441:17;2378:137;;;;;;;;;;;;;;;;;:8;:137::i;:::-;736:1786;;;;;;;;;;;247:2341:115::1;;;;;;;;;625:1:85;366:267:::0;639:1883::o;2447:178:26:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:20;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:20;;;13718:51:120;;;-1:-1:-1;;;13785:18:120;;;13778:34;2196:43:20;;;;;;;;;13691:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;18902:25:120;;;16269:33:24;-1:-1:-1;;;;;;;;;;;;16320:7:24;;;18875:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;;;;;;;;;;;;16349:8:24;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;5209:262:20:-;5271:1;5266;:6;5262:203;;5293:41;;;;;19757:2:120;19739:21;;;19796:2;19776:18;;;19769:30;19835:34;19830:2;19815:18;;19808:62;-1:-1:-1;;;19901:2:120;19886:18;;19879:32;19943:3;19928:19;;19555:398;5293:41:20;;;;;;;;5353:31;;;20170:21:120;;;20227:2;20207:18;;;20200:30;-1:-1:-1;;;20261:2:120;20246:18;;20239:40;20346:4;20331:20;;20324:36;;;5353:31:20;;;;;;;20311:3:120;5353:31:20;;;5403;;;20583:21:120;;;20640:2;20620:18;;;20613:30;-1:-1:-1;;;20674:2:120;20659:18;;20652:40;20759:4;20744:20;;20737:36;;;5403:31:20;;;;;;;20724:3:120;5403:31:20;;;5448:6;:4;:6::i;:::-;5209:262;;:::o;5476:178::-;5557:1;5552;:6;5548:100;;5579:30;5605:3;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;:::-;5476:178;;;:::o;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:20;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:20;;;21437:51:120;;;-1:-1:-1;;;21504:18:120;;;21497:34;;;;2712:4:20;21547:18:120;;;21540:34;2489:11:20;;1671:64;2586:43;;21410:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;289:658:120;460:2;512:21;;;582:13;;485:18;;;604:22;;;431:4;;460:2;683:15;;;;657:2;642:18;;;431:4;726:195;740:6;737:1;734:13;726:195;;;805:13;;-1:-1:-1;;;;;801:39:120;789:52;;896:15;;;;861:12;;;;837:1;755:9;726:195;;;-1:-1:-1;938:3:120;;289:658;-1:-1:-1;;;;;;289:658:120:o;1178:1569::-;1382:4;1411:2;1451;1440:9;1436:18;1481:2;1470:9;1463:21;1504:6;1539;1533:13;1570:6;1562;1555:22;1596:2;1586:12;;1629:2;1618:9;1614:18;1607:25;;1691:2;1681:6;1678:1;1674:14;1663:9;1659:30;1655:39;1729:2;1721:6;1717:15;1750:1;1771;1781:937;1797:6;1792:3;1789:15;1781:937;;;1866:22;;;-1:-1:-1;;1862:36:120;1850:49;;1922:13;;2009:9;;-1:-1:-1;;;;;2005:35:120;1990:51;;2080:11;;2074:18;2112:15;;;2105:27;;;2193:19;;1962:15;;;2225:24;;;2315:21;;;;2360:1;;2283:2;2271:15;;;2374:236;2390:8;2385:3;2382:17;2374:236;;;2471:15;;-1:-1:-1;;;;;;2467:42:120;2453:57;;2579:17;;;;2418:1;2409:11;;;;;2536:14;;;;2374:236;;;-1:-1:-1;2696:12:120;;;;2633:5;-1:-1:-1;;;2661:15:120;;;;1823:1;1814:11;1781:937;;;-1:-1:-1;2735:6:120;;1178:1569;-1:-1:-1;;;;;;;;;1178:1569:120:o;2752:258::-;2824:1;2834:113;2848:6;2845:1;2842:13;2834:113;;;2924:11;;;2918:18;2905:11;;;2898:39;2870:2;2863:10;2834:113;;;2965:6;2962:1;2959:13;2956:48;;;-1:-1:-1;;3000:1:120;2982:16;;2975:27;2752:258::o;3015:::-;3057:3;3095:5;3089:12;3122:6;3117:3;3110:19;3138:63;3194:6;3187:4;3182:3;3178:14;3171:4;3164:5;3160:16;3138:63;:::i;:::-;3255:2;3234:15;-1:-1:-1;;3230:29:120;3221:39;;;;3262:4;3217:50;;3015:258;-1:-1:-1;;3015:258:120:o;3278:803::-;3440:4;3469:2;3509;3498:9;3494:18;3539:2;3528:9;3521:21;3562:6;3597;3591:13;3628:6;3620;3613:22;3666:2;3655:9;3651:18;3644:25;;3728:2;3718:6;3715:1;3711:14;3700:9;3696:30;3692:39;3678:53;;3766:2;3758:6;3754:15;3787:1;3797:255;3811:6;3808:1;3805:13;3797:255;;;3904:2;3900:7;3888:9;3880:6;3876:22;3872:36;3867:3;3860:49;3932:40;3965:6;3956;3950:13;3932:40;:::i;:::-;3922:50;-1:-1:-1;4030:12:120;;;;3995:15;;;;3833:1;3826:9;3797:255;;;-1:-1:-1;4069:6:120;;3278:803;-1:-1:-1;;;;;;;3278:803:120:o;5184:488::-;-1:-1:-1;;;;;5512:15:120;;;5494:34;;5564:15;;;;5559:2;5544:18;;5537:43;5611:2;5596:18;;5589:34;5654:2;5639:18;;5632:34;;;;5443:3;5428:19;;5184:488::o;6472:1325::-;6811:2;6800:9;6793:21;6774:4;6837:49;6882:2;6871:9;6867:18;6385:2;6373:15;;-1:-1:-1;;;6413:4:120;6404:14;;6397:36;6458:2;6449:12;;6308:159;6837:49;6934:9;6926:6;6922:22;6917:2;6906:9;6902:18;6895:50;6969:3;6961:6;6954:19;7006:66;7001:2;6993:6;6989:15;6982:91;7106:66;7101:2;7093:6;7089:15;7082:91;7206:66;7201:2;7193:6;7189:15;7182:91;7307:66;7301:3;7293:6;7289:16;7282:92;7408:66;7402:3;7394:6;7390:16;7383:92;7509:66;7503:3;7495:6;7491:16;7484:92;7610:66;7604:3;7596:6;7592:16;7585:92;-1:-1:-1;;;7705:3:120;7697:6;7693:16;7686:29;7744:3;7736:6;7732:16;7724:24;;;7784:6;7779:2;7768:9;7764:18;7757:34;6472:1325;;;;:::o;7802:277::-;8004:2;7993:9;7986:21;7967:4;8024:49;8069:2;8058:9;8054:18;6385:2;6373:15;;-1:-1:-1;;;6413:4:120;6404:14;;6397:36;6458:2;6449:12;;6308:159;8024:49;8016:57;7802:277;-1:-1:-1;;7802:277:120:o;8216:127::-;8277:10;8272:3;8268:20;8265:1;8258:31;8308:4;8305:1;8298:15;8332:4;8329:1;8322:15;8821:184;8891:6;8944:2;8932:9;8923:7;8919:23;8915:32;8912:52;;;8960:1;8957;8950:12;8912:52;-1:-1:-1;8983:16:120;;8821:184;-1:-1:-1;8821:184:120:o;9263:395::-;9349:6;9357;9365;9418:2;9406:9;9397:7;9393:23;9389:32;9386:52;;;9434:1;9431;9424:12;9386:52;9466:9;9460:16;9516:4;9509:5;9505:16;9498:5;9495:27;9485:55;;9536:1;9533;9526:12;9485:55;9604:2;9589:18;;9583:25;9648:2;9633:18;;;9627:25;9559:5;;9583:25;;-1:-1:-1;9627:25:120;9263:395;-1:-1:-1;;;9263:395:120:o;9663:338::-;9844:19;;;9888:2;9879:12;;9872:28;;;;9956:3;9934:16;-1:-1:-1;;;;;;9930:36:120;9925:2;9916:12;;9909:58;9992:2;9983:12;;9663:338::o;10105:685::-;10445:13;;-1:-1:-1;;;;;10441:22:120;;;10423:41;;10524:4;10512:17;;;10506:24;10502:33;;;10480:20;;;10473:63;10596:4;10584:17;;;10578:24;10604:10;10574:41;10552:20;;;10545:71;;;;10652:3;10647:2;10632:18;;10625:31;;;10693:2;10672:19;;;10665:31;-1:-1:-1;;;10403:3:120;10712:19;;10705:43;10780:3;10765:19;;10105:685::o;10795:341::-;10894:6;10902;10955:2;10943:9;10934:7;10930:23;10926:32;10923:52;;;10971:1;10968;10961:12;10923:52;11000:9;10994:16;10984:26;;11053:2;11042:9;11038:18;11032:25;11086:1;11079:5;11076:12;11066:40;;11102:1;11099;11092:12;11066:40;11125:5;11115:15;;;10795:341;;;;;:::o;11141:127::-;11202:10;11197:3;11193:20;11190:1;11183:31;11233:4;11230:1;11223:15;11257:4;11254:1;11247:15;11273:380;11352:1;11348:12;;;;11395;;;11416:61;;11470:4;11462:6;11458:17;11448:27;;11416:61;11523:2;11515:6;11512:14;11492:18;11489:38;11486:161;;;11569:10;11564:3;11560:20;11557:1;11550:31;11604:4;11601:1;11594:15;11632:4;11629:1;11622:15;11486:161;;11273:380;;;:::o;11783:1526::-;12054:1;12050;12045:3;12041:11;12037:19;12029:6;12025:32;12014:9;12007:51;11988:4;12077:2;12115;12110;12099:9;12095:18;12088:30;12154:4;12149:2;12138:9;12134:18;12127:32;12179:1;12212:6;12206:13;12242:3;12264:1;12292:9;12288:2;12284:18;12274:28;;12352:2;12341:9;12337:18;12374;12364:61;;12418:4;12410:6;12406:17;12396:27;;12364:61;12471:2;12463:6;12460:14;12440:18;12437:38;12434:165;;;-1:-1:-1;;;12498:33:120;;12554:4;12551:1;12544:15;12584:4;12505:3;12572:17;12434:165;12681:3;12666:19;;112;;;155:14;;;12710:18;12737:100;;;;12851:1;12846:314;;;;12703:457;;12737:100;-1:-1:-1;;12770:24:120;;12758:37;;12815:12;;;;-1:-1:-1;12737:100:120;;12846:314;11730:1;11723:14;;;11767:4;11754:18;;12940:1;12954:165;12968:6;12965:1;12962:13;12954:165;;;13046:14;;13033:11;;;13026:35;13089:16;;;;12983:10;;12954:165;;;13139:11;;;-1:-1:-1;;12703:457:120;-1:-1:-1;;;13204:15:120;;13198:22;13191:4;13176:20;;13169:52;-1:-1:-1;;13276:4:120;13264:17;;;13258:24;13252:3;13237:19;;;13230:53;;;;-1:-1:-1;13300:3:120;;11783:1526;-1:-1:-1;;11783:1526:120:o;13314:225::-;13354:3;13385:1;13381:6;13378:1;13375:13;13372:136;;;13430:10;13425:3;13421:20;13418:1;13411:31;13465:4;13462:1;13455:15;13493:4;13490:1;13483:15;13372:136;-1:-1:-1;13524:9:120;;13314:225::o;13823:1265::-;14006:2;13995:9;13988:21;13969:4;14044:6;14038:13;14070:6;14112:2;14107;14096:9;14092:18;14085:30;14138:52;14185:3;14174:9;14170:19;14156:12;14138:52;:::i;:::-;14124:66;;14239:2;14231:6;14227:15;14221:22;14252:54;14302:2;14291:9;14287:18;14271:14;-1:-1:-1;;;;;246:31:120;234:44;;180:104;14252:54;-1:-1:-1;14355:2:120;14343:15;;14337:22;-1:-1:-1;;;;;246:31:120;;14418:2;14403:18;;234:44;14368:54;14477:2;14469:6;14465:15;14459:22;14453:3;14442:9;14438:19;14431:51;14531:3;14523:6;14519:16;14513:23;14559:2;14555:7;14627:2;14615:9;14607:6;14603:22;14599:31;14593:3;14582:9;14578:19;14571:60;14654:41;14688:6;14672:14;14654:41;:::i;:::-;14640:55;;14744:3;14736:6;14732:16;14726:23;14704:45;;14814:2;14802:9;14794:6;14790:22;14786:31;14780:3;14769:9;14765:19;14758:60;;14841:41;14875:6;14859:14;14841:41;:::i;:::-;14827:55;;;14931:3;14923:6;14919:16;14913:23;14945:54;14994:3;14983:9;14979:19;14963:14;10082:10;10071:22;10059:35;;10006:94;14945:54;-1:-1:-1;15053:3:120;15041:16;;;;15035:23;15015:18;;;;15008:51;;;;-1:-1:-1;15076:6:120;13823:1265::o;15093:615::-;15144:3;15182:5;15176:12;15209:6;15204:3;15197:19;15235:4;15276:2;15271:3;15267:12;15301:11;15328;15321:18;;15378:6;15375:1;15371:14;15364:5;15360:26;15348:38;;15420:2;15413:5;15409:14;15441:1;15451:231;15465:6;15462:1;15459:13;15451:231;;;15536:5;15530:4;15526:16;15521:3;15514:29;15564:38;15597:4;15588:6;15582:13;15564:38;:::i;:::-;15660:12;;;;15556:46;-1:-1:-1;15625:15:120;;;;15487:1;15480:9;15451:231;;;-1:-1:-1;15698:4:120;;15093:615;-1:-1:-1;;;;;;;15093:615:120:o;15713:1352::-;15931:4;15977:1;15973;15968:3;15964:11;15960:19;16018:2;16010:6;16006:15;15995:9;15988:34;16041:2;16079:6;16074:2;16063:9;16059:18;16052:34;16122:2;16117;16106:9;16102:18;16095:30;16160:6;16154:13;16203:4;16198:2;16187:9;16183:18;16176:32;16231:52;16278:3;16267:9;16263:19;16249:12;16231:52;:::i;:::-;16327:15;;;16321:22;16314:4;16299:20;;16292:52;16393:2;16381:15;;16375:22;-1:-1:-1;;16464:22:120;;;16460:31;;16454:3;16439:19;;16432:60;16541:21;;16571:22;;;16647:23;;;;-1:-1:-1;;;16416:7:120;;16609:15;;;;16698:178;16712:6;16709:1;16706:13;16698:178;;;16777:13;;16773:22;;16761:35;;16851:15;;;;16734:1;16727:9;;;;;16816:12;;;;16698:178;;;16702:3;16925:2;16917:6;16913:15;16907:22;16885:44;;16991:2;16979:9;16974:3;16970:19;16966:28;16960:3;16949:9;16945:19;16938:57;17012:47;17055:3;17039:14;17012:47;:::i;:::-;17004:55;15713:1352;-1:-1:-1;;;;;;;;;;;15713:1352:120:o;17538:371::-;-1:-1:-1;;;;;;17723:33:120;;17711:46;;17780:13;;17693:3;;17802:61;17780:13;17852:1;17843:11;;17836:4;17824:17;;17802:61;:::i;:::-;17883:16;;;;17901:1;17879:24;;17538:371;-1:-1:-1;;;17538:371:120:o;17914:274::-;18043:3;18081:6;18075:13;18097:53;18143:6;18138:3;18131:4;18123:6;18119:17;18097:53;:::i;:::-;18166:16;;;;;17914:274;-1:-1:-1;;17914:274:120:o;18193:277::-;18260:6;18313:2;18301:9;18292:7;18288:23;18284:32;18281:52;;;18329:1;18326;18319:12;18281:52;18361:9;18355:16;18414:5;18407:13;18400:21;18393:5;18390:32;18380:60;;18436:1;18433;18426:12;18380:60;18459:5;18193:277;-1:-1:-1;;;18193:277:120:o;18938:290::-;19008:6;19061:2;19049:9;19040:7;19036:23;19032:32;19029:52;;;19077:1;19074;19067:12;19029:52;19103:16;;-1:-1:-1;;;;;19148:31:120;;19138:42;;19128:70;;19194:1;19191;19184:12;19233:317;-1:-1:-1;;;;;19410:32:120;;19392:51;;19479:2;19474;19459:18;;19452:30;;;-1:-1:-1;;19499:45:120;;19525:18;;19517:6;19499:45;:::i;:::-;19491:53;19233:317;-1:-1:-1;;;;19233:317:120:o;20784:446::-;21034:2;21023:9;21016:21;21073:1;21068:2;21057:9;21053:18;21046:29;-1:-1:-1;;;21106:2:120;21095:9;21091:18;21084:35;21157:3;21150:4;21139:9;21135:20;21128:33;20997:4;21178:46;21219:3;21208:9;21204:19;21196:6;21178:46;:::i","linkReferences":{"test/helpers/utility/TestUtils.sol":{"TestUtils":[{"start":6176,"length":20}]}}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","metaCoinContract()":"4b6bd8fd","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testHappyPathSwapWithSTM()":"503152d3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"metaCoinContract\",\"outputs\":[{\"internalType\":\"contract MetaCoin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"testHappyPathSwapWithSTM\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/STMTest.t.sol\":\"STMTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/examples/MetaCoin.sol\":{\"keccak256\":\"0x56de72766d422d7bb6dd42a58a912f980594430931ea556b5029309d695ff1ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edbba28269669b655bf8145040e181d9457f9a627d64b3177255a8e2bf5adacb\",\"dweb:/ipfs/Qmaa8UEmxVUEwXvve774zAqVgCx8tTVVaKkRg1KyXWUbw5\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/STMTest.t.sol\":{\"keccak256\":\"0x3e5b69ad591c4afc3df9b2ef445c97076234ab92cb20b7174e0185ca9b468b0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d26666c7742b72a4c05194459d638e7c4f1d9583637de0c0d26aad5970c717a\",\"dweb:/ipfs/QmPCDnquq2ScXCideAi9yMG9fHuT8gLi2rGSsyQgtWsfHG\"]},\"test/helpers/DummyToken.sol\":{\"keccak256\":\"0xe3abac17e234bd69fd3de3d0d17a37e241f960e2fbe3f7aa04f9bf20731f0214\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://813357c48a7a344fcbd87760f3699d54b0a65b1fead858686057928056b3ba69\",\"dweb:/ipfs/QmbujERmmhaLvQxqvHJ8GjzTQGq7f7cdPrJTkDHgww3yZE\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/STMSetup.sol\":{\"keccak256\":\"0x9d627518235e863827479e8fdbb2bf6e5e491de46c6db7763a53b27e5bd422fb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://20cc6e834e7708021c092a023539934eaf3be4c5237354e499c17562a32980f4\",\"dweb:/ipfs/QmX9XGU8XYLgSKJc68eruHsBrzBYxYgVUKtypo5Zr3pp2s\"]},\"test/helpers/utility/TestPrep.sol\":{\"keccak256\":\"0xe9db9f37b70f6630b5405a0a092fa9d22c8d8d84883026aea4aebd50910f6eaa\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0cafeb108d49f553a0a6c0cd674fe48b88a1709e14e6e499c9bf8782a8c6db3c\",\"dweb:/ipfs/Qmawk5WvJS5t5UABHZ4wYp6Ep2CgVsktdaQxGxPwZk1G5r\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]},\"test/helpers/utility/TestUtils.sol\":{\"keccak256\":\"0x9a8f2eb436c278353499ba7e42dfdc947cadc0c1cac9990e2b3ce6ff7a73d6e3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9da60794dda4557d72a054ffb2d529ba00c3bb71bc360b5238b61e11b15963af\",\"dweb:/ipfs/QmdfJg5jKJZNnmsmhZLCYPqqYQoLeMtUj9Bmugh9AeNXjU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"view","type":"function","name":"metaCoinContract","outputs":[{"internalType":"contract MetaCoin","name":"","type":"address"}]},{"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":"testHappyPathSwapWithSTM"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/STMTest.t.sol":"STMTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/examples/MetaCoin.sol":{"keccak256":"0x56de72766d422d7bb6dd42a58a912f980594430931ea556b5029309d695ff1ee","urls":["bzz-raw://edbba28269669b655bf8145040e181d9457f9a627d64b3177255a8e2bf5adacb","dweb:/ipfs/Qmaa8UEmxVUEwXvve774zAqVgCx8tTVVaKkRg1KyXWUbw5"],"license":"MIT"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/STMTest.t.sol":{"keccak256":"0x3e5b69ad591c4afc3df9b2ef445c97076234ab92cb20b7174e0185ca9b468b0a","urls":["bzz-raw://7d26666c7742b72a4c05194459d638e7c4f1d9583637de0c0d26aad5970c717a","dweb:/ipfs/QmPCDnquq2ScXCideAi9yMG9fHuT8gLi2rGSsyQgtWsfHG"],"license":"MIT"},"test/helpers/DummyToken.sol":{"keccak256":"0xe3abac17e234bd69fd3de3d0d17a37e241f960e2fbe3f7aa04f9bf20731f0214","urls":["bzz-raw://813357c48a7a344fcbd87760f3699d54b0a65b1fead858686057928056b3ba69","dweb:/ipfs/QmbujERmmhaLvQxqvHJ8GjzTQGq7f7cdPrJTkDHgww3yZE"],"license":"MIT"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/STMSetup.sol":{"keccak256":"0x9d627518235e863827479e8fdbb2bf6e5e491de46c6db7763a53b27e5bd422fb","urls":["bzz-raw://20cc6e834e7708021c092a023539934eaf3be4c5237354e499c17562a32980f4","dweb:/ipfs/QmX9XGU8XYLgSKJc68eruHsBrzBYxYgVUKtypo5Zr3pp2s"],"license":"BUSL-1.1"},"test/helpers/utility/TestPrep.sol":{"keccak256":"0xe9db9f37b70f6630b5405a0a092fa9d22c8d8d84883026aea4aebd50910f6eaa","urls":["bzz-raw://0cafeb108d49f553a0a6c0cd674fe48b88a1709e14e6e499c9bf8782a8c6db3c","dweb:/ipfs/Qmawk5WvJS5t5UABHZ4wYp6Ep2CgVsktdaQxGxPwZk1G5r"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"},"test/helpers/utility/TestUtils.sol":{"keccak256":"0x9a8f2eb436c278353499ba7e42dfdc947cadc0c1cac9990e2b3ce6ff7a73d6e3","urls":["bzz-raw://9da60794dda4557d72a054ffb2d529ba00c3bb71bc360b5238b61e11b15963af","dweb:/ipfs/QmdfJg5jKJZNnmsmhZLCYPqqYQoLeMtUj9Bmugh9AeNXjU"],"license":"BUSL-1.1"}},"version":1},"id":85} \ No newline at end of file diff --git a/out/SafeCast.sol/SafeCast.json b/out/SafeCast.sol/SafeCast.json new file mode 100644 index 00000000..2a58b455 --- /dev/null +++ b/out/SafeCast.sol/SafeCast.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c11f56e5349abb43294d1c75ba57bc130d69f54261293aa11dd172f48b0d2ce264736f6c634300080c0033","sourceMap":"281:671:57:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:671:57;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c11f56e5349abb43294d1c75ba57bc130d69f54261293aa11dd172f48b0d2ce264736f6c634300080c0033","sourceMap":"281:671:57:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Safe casting methods\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for safely casting between types Adapted from UniswapV3: https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/libraries/SafeCast.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/utils/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/utils/SafeCast.sol\":{\"keccak256\":\"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650\",\"dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/utils/SafeCast.sol":"SafeCast"},"evmVersion":"london","libraries":{}},"sources":{"lib/utils/SafeCast.sol":{"keccak256":"0xd63fbeca470ba583cde506c7ea68d7956ce46a0d13944905becab33fb92dfc21","urls":["bzz-raw://3ed594213097cbd96b35ebc2cda198ef42ea03203d8b2cb0eb8d870e19358650","dweb:/ipfs/QmPbzJKBMFKXf7AZm4uaGfH9Vq1eqfMcUSbjjJNNsmpyuy"],"license":"BUSL-1.1"}},"version":1},"id":57} \ No newline at end of file diff --git a/out/ServiceManager.sol/ServiceManager.json b/out/ServiceManager.sol/ServiceManager.json new file mode 100644 index 00000000..32ca5542 --- /dev/null +++ b/out/ServiceManager.sol/ServiceManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPermissionedOperators","inputs":[{"name":"_operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"aggregator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"avsDirectory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"clientToPolicy","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"delegationManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deployPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"},{"name":"_policy","type":"string","internalType":"string"},{"name":"_quorumThreshold","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deploySocialGraph","inputs":[{"name":"_socialGraphID","type":"string","internalType":"string"},{"name":"_socialGraphConfig","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployedPolicyIDs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDeployedPolicies","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRestakedStrategies","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRestakeableStrategies","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSocialGraphIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"hashTaskWithExpiry","inputs":[{"name":"_task","type":"tuple","internalType":"struct Task","components":[{"name":"taskId","type":"string","internalType":"string"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"encodedSigAndArgs","type":"bytes","internalType":"bytes"},{"name":"policyID","type":"string","internalType":"string"},{"name":"quorumThresholdCount","type":"uint32","internalType":"uint32"},{"name":"expireByBlockNumber","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"idToPolicy","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"idToSocialGraph","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_aggregator","type":"address","internalType":"address"},{"name":"_delegationManager","type":"address","internalType":"address"},{"name":"_stakeRegistry","type":"address","internalType":"address"},{"name":"_avsDirectory","type":"address","internalType":"address"},{"name":"_thresholdStake","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operators","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"totalStake","type":"uint256","internalType":"uint256"},{"name":"status","type":"uint8","internalType":"enum ServiceManager.OperatorStatus"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"_operatorSigningKey","type":"address","internalType":"address"},{"name":"_operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermissionedOperators","inputs":[{"name":"_operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeStrategy","inputs":[{"name":"_strategy","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rotatePredicateSigningKey","inputs":[{"name":"_oldSigningKey","type":"address","internalType":"address"},{"name":"_newSigningKey","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAVSDirectory","inputs":[{"name":"_avsDirectory","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAggregator","inputs":[{"name":"_aggregator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationManager","inputs":[{"name":"_delegationManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetadataURI","inputs":[{"name":"_metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPolicy","inputs":[{"name":"_policyID","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakeRegistry","inputs":[{"name":"_stakeRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setThresholdStake","inputs":[{"name":"_thresholdStake","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingKeyToOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"socialGraphIDs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"spentTaskIds","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"stakeRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"strategies","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"thresholdStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorsForQuorum","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateSignatures","inputs":[{"name":"_task","type":"tuple","internalType":"struct Task","components":[{"name":"taskId","type":"string","internalType":"string"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"encodedSigAndArgs","type":"bytes","internalType":"bytes"},{"name":"policyID","type":"string","internalType":"string"},{"name":"quorumThresholdCount","type":"uint32","internalType":"uint32"},{"name":"expireByBlockNumber","type":"uint256","internalType":"uint256"}]},{"name":"signerAddresses","type":"address[]","internalType":"address[]"},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"isVerified","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"AVSDirectoryUpdated","inputs":[{"name":"avsDirectory","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AggregatorUpdated","inputs":[{"name":"aggregator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegationManagerUpdated","inputs":[{"name":"delegationManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DeployedPolicy","inputs":[{"name":"policyID","type":"string","indexed":true,"internalType":"string"},{"name":"policy","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NonCompliantTask","inputs":[{"name":"taskID","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RemovedPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policyID","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policyID","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SocialGraphDeployed","inputs":[{"name":"socialGraphID","type":"string","indexed":true,"internalType":"string"},{"name":"socialGraphConfig","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StakeRegistryUpdated","inputs":[{"name":"stakeRegistry","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TaskValidated","inputs":[{"name":"msgSender","type":"address","indexed":true,"internalType":"address"},{"name":"target","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"policyID","type":"string","indexed":false,"internalType":"string"},{"name":"taskId","type":"string","indexed":false,"internalType":"string"},{"name":"quorumThresholdCount","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"expireByBlockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"signerAddresses","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"ThresholdStakeUpdated","inputs":[{"name":"thresholdStake","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ServiceManager__ArrayLengthMismatch","inputs":[]},{"type":"error","name":"ServiceManager__InvalidOperator","inputs":[]},{"type":"error","name":"ServiceManager__InvalidStrategy","inputs":[]},{"type":"error","name":"ServiceManager__Unauthorized","inputs":[]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033","sourceMap":"744:19544:71:-:0;;;3593:53;;;;;;;;;-1:-1:-1;3617:22:71;:20;:22::i;:::-;744:19544;;5388:279:38;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:38;;216:2:120;5447:66:38;;;198:21:120;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:120;;;338:37;392:19;;5447:66:38;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:38;5588:15;5573:30;;;;;;5622:28;;564:36:120;;;5622:28:38;;552:2:120;537:18;5622:28:38;;;;;;;5523:138;5388:279::o;422:184:120:-;744:19544:71;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033","sourceMap":"744:19544:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7453:587;;;;;;:::i;:::-;;:::i;:::-;;11212:112;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1273:55;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1273:55:71;;;;;;-1:-1:-1;;;;;2293:32:120;;;2275:51;;2263:2;2248:18;1273:55:71;2129:203:120;1218:49:71;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1334:65::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4468:14:120;;4461:22;4443:41;;4431:2;4416:18;1334:65:71;4303:187:120;15234:440:71;;;;;;:::i;:::-;;:::i;12416:2015::-;;;;;;:::i;:::-;;:::i;4688:204::-;;;;;;:::i;:::-;;:::i;1803:29::-;;;;;;;;;7333:25:120;;;7321:2;7306:18;1803:29:71;7187:177:120;1667:25:71;;;;;-1:-1:-1;;;;;1667:25:71;;;16589:539;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11932:183::-;;;;;;:::i;:::-;;:::i;18027:1639::-;;;;;;:::i;:::-;;:::i;14667:449::-;;;;;;:::i;:::-;;:::i;1736:28::-;;;;;-1:-1:-1;;;;;1736:28:71;;;1770:27;;;;;-1:-1:-1;;;;;1770:27:71;;;11647:175;;;;;;:::i;:::-;;:::i;2071:101:37:-;;;:::i;1454:43:71:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:164;;;;;;:::i;:::-;;:::i;6983:234::-;;;;;;:::i;:::-;;:::i;6524:230::-;;;;;;:::i;:::-;;:::i;5457:174::-;;;;;;:::i;:::-;;:::i;5789:186::-;;;;;;:::i;:::-;;:::i;1441:85:37:-;1513:6;;-1:-1:-1;;;;;1513:6:37;1441:85;;19830:456:71;;;;;;:::i;:::-;;:::i;3652:477::-;;;;;;:::i;:::-;;:::i;8235:992::-;;;;;;:::i;:::-;;:::i;9350:473::-;;;;;;:::i;:::-;;:::i;9998:449::-;;;;;;:::i;:::-;;:::i;11433:107::-;;;:::i;10659:442::-;;;;;;:::i;:::-;;:::i;1634:27::-;;;;;;:::i;:::-;;:::i;1405:43::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1558:33::-;;;;;;:::i;:::-;;:::i;1503:48::-;;;;;;:::i;:::-;;:::i;1597:30::-;;;;;;:::i;:::-;;:::i;5086:180::-;;;;;;:::i;:::-;;:::i;15994:111::-;;;:::i;1698:32::-;;;;;-1:-1:-1;;;;;1698:32:71;;;2321:198:37;;;;;;:::i;:::-;;:::i;4320:162:71:-;;;;;;:::i;:::-;;:::i;7453:587::-;7608:25;7586:10;7576:21;;;;:9;:21;;;;;:28;;;;;:57;;;;;;;;:::i;:::-;;7555:172;;;;-1:-1:-1;;;7555:172:71;;14955:2:120;7555:172:71;;;14937:21:120;14994:2;14974:18;;;14967:30;;;15033:34;15013:18;;;15006:62;15104:34;15084:18;;;15077:62;-1:-1:-1;;;15155:19:120;;;15148:35;15200:19;;7555:172:71;;;;;;;;;-1:-1:-1;;;;;7772:36:71;;;;;;;:20;:36;;;;;;;7758:10;:50;7737:184;;;;-1:-1:-1;;;7737:184:71;;15432:2:120;7737:184:71;;;15414:21:120;15471:2;15451:18;;;15444:30;15510:34;15490:18;;;15483:62;15581:34;15561:18;;;15554:62;15653:25;15632:19;;;15625:54;15696:19;;7737:184:71;15230:491:120;7737:184:71;-1:-1:-1;;;;;7938:36:71;;;;;;;:20;:36;;;;;;7931:43;;-1:-1:-1;;;;;;7931:43:71;;;;;;7984:36;;;;;;;;;;:49;;;;;8023:10;7984:49;;;7453:587::o;11212:112::-;11266:15;11300:17;11293:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11212:112;:::o;15234:440::-;1334:13:37;:11;:13::i;:::-;15325:9:71::1;15320:348;15345:10;:17:::0;15340:22;::::1;15320:348;;15400:9;-1:-1:-1::0;;;;;15383:26:71::1;:10;15394:1;15383:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15383:13:71::1;:26;15379:220;;;15445:10;15456:17:::0;;:21:::1;::::0;15476:1:::1;::::0;15456:21:::1;:::i;:::-;15445:33;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;15429:10:::1;:13:::0;;-1:-1:-1;;;;;15445:33:71;;::::1;::::0;15440:1;;15429:13;::::1;;;;;:::i;:::-;;;;;;;;;:49;;;;;-1:-1:-1::0;;;;;15429:49:71::1;;;;;-1:-1:-1::0;;;;;15429:49:71::1;;;;;;15496:10;:16;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;15496:16:71;;;;;-1:-1:-1;;;;;;15496:16:71::1;::::0;;;;;;;;15535:26:::1;::::0;-1:-1:-1;;;;;15535:26:71;::::1;::::0;::::1;::::0;::::1;15320:348;15234:440:::0;:::o;15379:220::-:1;15640:3;;15320:348;;;;15234:440:::0;:::o;12416:2015::-;12574:15;12622:26;;;;;;;;:::i;:::-;:31;;12601:137;;;;-1:-1:-1;;;12601:137:71;;17120:2:120;12601:137:71;;;17102:21:120;17159:2;17139:18;;;17132:30;-1:-1:-1;;;;;;;;;;;17178:18:120;;;17171:62;17269:34;17249:18;;;17242:62;-1:-1:-1;;;17320:19:120;;;17313:38;17368:19;;12601:137:71;16918:475:120;12601:137:71;12782:10;:17;12756:15;:22;:43;12748:95;;;;-1:-1:-1;;;12748:95:71;;17600:2:120;12748:95:71;;;17582:21:120;17639:2;17619:18;;;17612:30;17678:34;17658:18;;;17651:62;-1:-1:-1;;;17729:18:120;;;17722:37;17776:19;;12748:95:71;17398:403:120;12748:95:71;12877:5;:25;;;12861:12;:41;;12853:107;;;;-1:-1:-1;;;12853:107:71;;18008:2:120;12853:107:71;;;17990:21:120;18047:2;18027:18;;;18020:30;-1:-1:-1;;;;;;;;;;;18066:18:120;;;18059:62;-1:-1:-1;;;18137:18:120;;;18130:51;18198:19;;12853:107:71;17806:417:120;12853:107:71;12979:12;12992;:5;;:12;:::i;:::-;12979:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;12978:27;12970:95;;;;-1:-1:-1;;;12970:95:71;;19235:2:120;12970:95:71;;;19217:21:120;19274:2;19254:18;;;19247:30;-1:-1:-1;;;;;;;;;;;19293:18:120;;;19286:62;19384:25;19364:18;;;19357:53;19427:19;;12970:95:71;19033:419:120;12970:95:71;13076:23;13102:19;13122:14;;;;:5;:14;:::i;:::-;13102:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;13076:61;;13168:15;13187:1;13168:20;;:69;;;;-1:-1:-1;13222:15:71;13192:26;;;;;;;;:::i;:::-;:45;;;13168:69;13147:217;;;;-1:-1:-1;;;13147:217:71;;19659:2:120;13147:217:71;;;19641:21:120;19698:3;19678:18;;;19671:31;-1:-1:-1;;;;;;;;;;;19718:18:120;;;19711:62;19809:34;19789:18;;;19782:62;19881:34;19860:19;;;19853:63;-1:-1:-1;;;19932:19:120;;;19925:36;19978:19;;13147:217:71;19457:546:120;13147:217:71;13375:19;13397:25;13416:5;13397:18;:25::i;:::-;13375:47;;13437:9;13432:647;13456:26;;;;;;;;:::i;:::-;13452:30;;:1;:30;13432:647;;;13507:1;13503;:5;:71;;;;-1:-1:-1;13551:15:71;13567:5;13571:1;13567;:5;:::i;:::-;13551:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13512:62:71;13520:15;13536:1;13520:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13512:62:71;;;13503:71;13499:162;;;13594:52;;-1:-1:-1;;;13594:52:71;;20210:2:120;13594:52:71;;;20192:21:120;20249:2;20229:18;;;20222:30;20288:34;20268:18;;;20261:62;-1:-1:-1;;;20339:18:120;;;20332:40;20389:19;;13594:52:71;20008:406:120;13499:162:71;13674:23;13700:41;13714:11;13727:10;13738:1;13727:13;;;;;;;;:::i;:::-;;;;;;;13700;:41::i;:::-;13674:67;;13782:15;13798:1;13782:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13763:37:71;:15;-1:-1:-1;;;;;13763:37:71;;13755:67;;;;-1:-1:-1;;;13755:67:71;;20621:2:120;13755:67:71;;;20603:21:120;20660:2;20640:18;;;20633:30;-1:-1:-1;;;20679:18:120;;;20672:47;20736:18;;13755:67:71;20419:341:120;13755:67:71;-1:-1:-1;;;;;13855:37:71;;;13836:16;13855:37;;;:20;:37;;;;;;;;-1:-1:-1;;;;;13914:19:71;;;;;;:9;:19;;;;;:26;;;;;:55;;;;;;;;:::i;:::-;;13906:103;;;;-1:-1:-1;;;13906:103:71;;20967:2:120;13906:103:71;;;20949:21:120;21006:2;20986:18;;;20979:30;21045:34;21025:18;;;21018:62;-1:-1:-1;;;21096:18:120;;;21089:33;21139:19;;13906:103:71;20765:399:120;13906:103:71;-1:-1:-1;;14051:3:71;;13432:647;;;-1:-1:-1;14176:11:71;;;;;;14150:12;;;;;;:::i;:::-;-1:-1:-1;;;;;14094:265:71;14121:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14094:265:71;;14201:14;;;;:5;:14;:::i;:::-;14229:12;:5;;:12;:::i;:::-;14255:5;:26;;;;;;;;;;:::i;:::-;14295:5;:25;;;14334:15;14094:265;;;;;;;;;;;;:::i;:::-;;;;;;;;14399:4;14370:12;14383;:5;;:12;:::i;:::-;14370:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;:33;;;;;-1:-1:-1;;14370:33:71;;;;;;;;;-1:-1:-1;14370:33:71;;-1:-1:-1;;12416:2015:71;;;;;:::o;4688:204::-;1334:13:37;:11;:13::i;:::-;4789:17:71::1;:38:::0;;-1:-1:-1;;;;;;4789:38:71::1;-1:-1:-1::0;;;;;4789:38:71;::::1;::::0;;::::1;::::0;;;4842:43:::1;::::0;::::1;::::0;-1:-1:-1;;4842:43:71::1;4688:204:::0;:::o;16589:539::-;16763:10;:17;16683:16;;16711:35;;-1:-1:-1;;;;;16749:32:71;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16749:32:71;;16711:70;;16791:13;16823:9;16818:269;16842:10;:17;16838:21;;16818:269;;;16903:17;;16957:10;:13;;16975:1;;-1:-1:-1;;;;;16903:17:71;;16884:52;;16937:8;;16957:10;16968:1;;16957:13;;;;;;:::i;:::-;;;;;;;;;;;16884:88;;;;;;-1:-1:-1;;;;;;16884:88:71;;;-1:-1:-1;;;;;22495:15:120;;;16884:88:71;;;22477:34:120;16957:13:71;;22527:18:120;;;22520:43;22412:18;;16884:88:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:92;16880:197;;;17024:10;17035:1;17024:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17024:13:71;16996:18;17015:5;16996:25;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16996:41:71;;;:25;;;;;;;;;;;:41;17055:7;;;;:::i;:::-;;;;16880:197;16861:3;;;;:::i;:::-;;;;16818:269;;;-1:-1:-1;17103:18:71;;16589:539;-1:-1:-1;;;16589:539:71:o;11932:183::-;12027:10;12052:5;12012:26;;;:14;:26;;;;;;:37;;;;12039:9;;12012:37;:::i;:::-;;;;;;;;;;;;;;:45;;;;;-1:-1:-1;;12012:45:71;;;;;;;;;;12072:36;;12098:9;;12072:36;:::i;:::-;;;;;;;;;;12086:10;;12072:36;;;;;11932:183;:::o;18027:1639::-;18155:49;;;18151:124;;18227:37;;-1:-1:-1;;;18227:37:71;;;;;;;;;;;18151:124;18284:36;18330:27;18367:33;18415:9;18410:1178;18426:25;;;18410:1178;;18490:18;;18509:1;18490:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;18468:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18468:43:71;;-1:-1:-1;;;;18525:994:71;18545:19;:26;18541:1;:30;18525:994;;;18614:19;18634:1;18614:22;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;18669:30:71;;;;;;:9;:30;;;;;;18614:22;;-1:-1:-1;18669:30:71;-1:-1:-1;18721:19:71;;;;;;:54;;;;;;;;:::i;:::-;;18717:141;;;18806:33;;-1:-1:-1;;;18806:33:71;;;;;;;;;;;18717:141;18875:18;18916:9;18911:324;18932:10;:17;18927:22;;18911:324;;19007:17;;19097:10;:13;;-1:-1:-1;;;;;19007:17:71;;;;18988:52;;19066:19;;19108:1;;19097:13;;;;;;:::i;:::-;;;;;;;;;;;18988:145;;;;;;-1:-1:-1;;;;;;18988:145:71;;;-1:-1:-1;;;;;22495:15:120;;;18988:145:71;;;22477:34:120;19097:13:71;;22527:18:120;;;22520:43;22412:18;;18988:145:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18974:159;;;;:::i;:::-;;-1:-1:-1;19191:3:71;;18911:324;;;-1:-1:-1;19252:36:71;;;19361:14;;19348:27;;:85;;19408:25;19348:85;;;19378:27;19348:85;19306:19;;;;:127;;:19;;-1:-1:-1;;19306:127:71;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;19483:3:71;;18525:994;;;-1:-1:-1;19560:3:71;;18410:1178;;;;19645:13;;19602:57;;;;;;;:::i;:::-;;;;;;;;19625:18;;19602:57;;;;;;;:::i;:::-;;;;;;;;;;;;;;;18141:1525;;;18027:1639;;;;:::o;14667:449::-;1334:13:37;:11;:13::i;:::-;14852::71::1;::::0;14837:72:::1;::::0;-1:-1:-1;;;14837:72:71;;25743:4:120;25731:17;;14837:72:71::1;::::0;::::1;25713:36:120::0;25765:18;;;25758:34;;;14771:51:71::1;::::0;-1:-1:-1;;;;;14852:13:71::1;::::0;14837:51:::1;::::0;25686:18:120;;14837:72:71::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14771:138;;14959:9;-1:-1:-1::0;;;;;14923:45:71::1;14931:14;:23;;;-1:-1:-1::0;;;;;14923:45:71::1;;14919:116;;14991:33;;-1:-1:-1::0;;;14991:33:71::1;;;;;;;;;;;14919:116;15044:10;:26:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;15044:26:71;;;;::::1;::::0;;-1:-1:-1;;;;;;15044:26:71::1;-1:-1:-1::0;;;;;15044:26:71;::::1;::::0;;::::1;::::0;;;15085:24:::1;::::0;15044:26;;15085:24:::1;::::0;::::1;14761:355;14667:449:::0;;;:::o;11647:175::-;11739:10;11724:26;;;;:14;:26;;;;;;;:37;;11764:4;;11724:26;:37;;11751:9;;11724:37;:::i;:::-;;;;;;;;;;;;;;:44;;;;;-1:-1:-1;;11724:44:71;;;;;;;;;;11783:32;;11805:9;;11783:32;:::i;:::-;;;;;;;;;;11793:10;;11783:32;;;;;11647:175;:::o;2071:101:37:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;6144:164:71:-;1334:13:37;:11;:13::i;:::-;6253:12:71::1;::::0;6239:62:::1;::::0;-1:-1:-1;;;6239:62:71;;-1:-1:-1;;;;;6253:12:71;;::::1;::::0;6239:48:::1;::::0;:62:::1;::::0;6288:12;;6239:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6144:164:::0;:::o;6983:234::-;1334:13:37;:11;:13::i;:::-;7099:9:71::1;7094:117;7114:21:::0;;::::1;7094:117;;;7195:5;7156:21;:36;7178:10;;7189:1;7178:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7156:36:71::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;7156:36:71;:44;;-1:-1:-1;;7156:44:71::1;::::0;::::1;;::::0;;;::::1;::::0;;7137:3;::::1;::::0;::::1;:::i;:::-;;;;7094:117;;;;6983:234:::0;;:::o;6524:230::-;1334:13:37;:11;:13::i;:::-;6637:9:71::1;6632:116;6652:21:::0;;::::1;6632:116;;;6733:4;6694:21;:36;6716:10;;6727:1;6716:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6694:36:71::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;6694:36:71;:43;;-1:-1:-1;;6694:43:71::1;::::0;::::1;;::::0;;;::::1;::::0;;6675:3;::::1;::::0;::::1;:::i;:::-;;;;6632:116;;5457:174:::0;1334:13:37;:11;:13::i;:::-;5548:12:71::1;:28:::0;;-1:-1:-1;;;;;;5548:28:71::1;-1:-1:-1::0;;;;;5548:28:71;::::1;::::0;;::::1;::::0;;;5591:33:::1;::::0;::::1;::::0;-1:-1:-1;;5591:33:71::1;5457:174:::0;:::o;5789:186::-;1334:13:37;:11;:13::i;:::-;5884:14:71::1;:32:::0;;;5931:37:::1;::::0;5901:15;;5931:37:::1;::::0;;;::::1;5789:186:::0;:::o;19830:456::-;19914:7;19991:12;:5;;:12;:::i;:::-;20021:15;;;;;;;;:::i;:::-;20054:12;;;;;;;;:::i;:::-;20084:11;;;;20113:23;;;;20084:5;20113:23;:::i;:::-;20154:14;;;;:5;:14;:::i;:::-;20186:26;;;;;;;;:::i;:::-;20230:5;:25;;;19963:306;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19940:339;;;;;;19933:346;;19830:456;;;:::o;3652:477::-;3111:19:38;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:38;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:38;1476:19:39;:23;;;3219:66:38;;-1:-1:-1;3268:12:38;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:38;;28297:2:120;3157:201:38;;;28279:21:120;28336:2;28316:18;;;28309:30;28375:34;28355:18;;;28348:62;-1:-1:-1;;;28426:18:120;;;28419:44;28480:19;;3157:201:38;28095:410:120;3157:201:38;3368:12;:16;;-1:-1:-1;;3368:16:38;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:38;;;;;3394:65;3894:26:71::1;3913:6;3894:18;:26::i;:::-;3930:10;:24:::0;;-1:-1:-1;;;;;3930:24:71;;::::1;-1:-1:-1::0;;;;;;3930:24:71;;::::1;;::::0;;;3964:17:::1;:38:::0;;;;::::1;::::0;;::::1;;::::0;;4012:13:::1;:30:::0;;;;::::1;::::0;;::::1;;::::0;;4052:12:::1;:28:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4090:14:::1;:32:::0;;;3479:99:38;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:38;;;3553:14;;-1:-1:-1;28662:36:120;;3553:14:38;;28650:2:120;28635:18;3553:14:38;;;;;;;3479:99;3101:483;3652:477:71;;;;;;:::o;8235:992::-;3495:10;3473:33;;;;:21;:33;;;;;;;;3468:102;;3529:30;;-1:-1:-1;;;3529:30:71;;;;;;;;;;;3468:102;-1:-1:-1;;;;;8452:41:71;;::::1;8505:1;8452:41:::0;;;:20:::1;:41;::::0;;;;;::::1;:55:::0;8431:167:::1;;;::::0;-1:-1:-1;;;8431:167:71;;28911:2:120;8431:167:71::1;::::0;::::1;28893:21:120::0;28950:2;28930:18;;;28923:30;28989:34;28969:18;;;28962:62;29060:34;29040:18;;;29033:62;-1:-1:-1;;;29111:19:120;;;29104:32;29153:19;;8431:167:71::1;28709:469:120::0;8431:167:71::1;8608:18;8641:9:::0;8636:229:::1;8657:10;:17:::0;8652:22;::::1;8636:229;;8724:17;::::0;8780:10:::1;:13:::0;;-1:-1:-1;;;;;8724:17:71;;::::1;::::0;8705:52:::1;::::0;8758:10:::1;::::0;8791:1;;8780:13;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;8705:90:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8705:90:71;;;-1:-1:-1;;;;;22495:15:120;;;8705:90:71::1;::::0;::::1;22477:34:120::0;8780:13:71;::::1;22527:18:120::0;;;22520:43;22412:18;;8705:90:71::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8691:104;::::0;;::::1;:::i;:::-;::::0;-1:-1:-1;8837:3:71::1;;8636:229;;;;8893:14;;8879:10;:28;8875:346;;8947:51;::::0;;;;::::1;::::0;;;;;8972:25:::1;8947:51;::::0;;::::1;::::0;;;8933:10:::1;-1:-1:-1::0;8923:21:71;;;:9:::1;:21:::0;;;;;;:75;;;;;;;;::::1;::::0;;8947:51;;8923:21;:75;;;;-1:-1:-1;;8923:75:71::1;::::0;;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;;;;;;;;9012:41:71;;::::1;;::::0;;;:20:::1;:41;::::0;;;;;;:54;;-1:-1:-1;;;;;;9012:54:71::1;9056:10;9012:54:::0;;::::1;::::0;;;9094:12:::1;::::0;9080:81;;-1:-1:-1;;;9080:81:71;;9094:12;;;::::1;::::0;9080:49:::1;::::0;:81:::1;::::0;9056:10;9142:18;;9080:81:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9180:30:71::1;::::0;9199:10:::1;::::0;-1:-1:-1;9180:30:71::1;::::0;-1:-1:-1;9180:30:71;;::::1;8421:806;8235:992:::0;;:::o;9350:473::-;1334:13:37;:11;:13::i;:::-;-1:-1:-1;;;;;9468:20:71;::::1;9499:31;9468:20:::0;;;:9:::1;:20;::::0;;;;:27:::1;;::::0;::::1;;:62;::::0;::::1;;;;;;:::i;:::-;;;9447:177;;;::::0;-1:-1:-1;;;9447:177:71;;30015:2:120;9447:177:71::1;::::0;::::1;29997:21:120::0;30054:2;30034:18;;;30027:30;;;30093:34;30073:18;;;30066:62;30164:34;30144:18;;;30137:62;-1:-1:-1;;;30215:19:120;;;30208:35;30260:19;;9447:177:71::1;29813:472:120::0;9447:177:71::1;9657:44;::::0;;;;::::1;::::0;;;-1:-1:-1;9657:44:71;;::::1;::::0;::::1;9673:27;9657:44:::0;;-1:-1:-1;;;;;9634:20:71;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;;:67;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;9634:67:71;;::::1;::::0;;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;;9725:12:71::1;::::0;9711:64:::1;::::0;-1:-1:-1;;;9711:64:71;;-1:-1:-1;;;;;2293:32:120;;;9711:64:71::1;::::0;::::1;2275:51:120::0;9725:12:71;;::::1;::::0;-1:-1:-1;9711:53:71::1;::::0;2248:18:120;;9711:64:71::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9790:26:71::1;::::0;-1:-1:-1;;;;;9790:26:71;::::1;::::0;-1:-1:-1;9790:26:71::1;::::0;-1:-1:-1;9790:26:71;;::::1;9350:473:::0;:::o;9998:449::-;1334:13:37;:11;:13::i;:::-;10167:10:71::1;10178:9;10167:21;;;;;;:::i;:::-;;;;;;;;;;;;;10161:35;;;;;:::i;:::-;:40:::0;;-1:-1:-1;10153:95:71::1;;;::::0;-1:-1:-1;;;10153:95:71;;30492:2:120;10153:95:71::1;::::0;::::1;30474:21:120::0;30531:2;30511:18;;;30504:30;30570:34;30550:18;;;30543:62;-1:-1:-1;;;30621:18:120;;;30614:40;30671:19;;10153:95:71::1;30290:406:120::0;10153:95:71::1;10282:7;10258:10;10269:9;10258:21;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;10332:16;10299:19;10319:9;10299:30;;;;;;:::i;:::-;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;:49;;;;10358:17:::1;:33:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;10358:33:71;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;10421:9;10406:34;;;;;;:::i;:::-;;;;;;;;;10432:7;10406:34;;;;;;:::i;:::-;;;;;;;;9998:449:::0;;;:::o;11433:107::-;11485:15;11519:14;11512:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10659:442;1334:13:37;:11;:13::i;:::-;10806:15:71::1;10822:14;10806:31;;;;;;:::i;:::-;;;;;;;;;;;;;10800:45;;;;;:::i;:::-;:50:::0;;-1:-1:-1;10779:138:71::1;;;::::0;-1:-1:-1;;;10779:138:71;;30903:2:120;10779:138:71::1;::::0;::::1;30885:21:120::0;30942:2;30922:18;;;30915:30;30981:34;30961:18;;;30954:62;-1:-1:-1;;;31032:18:120;;;31025:51;31093:19;;10779:138:71::1;30701:417:120::0;10779:138:71::1;10961:18;10927:15;10943:14;10927:31;;;;;;:::i;:::-;;;;;;;;;;;;;:52;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10989:14:71::1;:35:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;10989:35:71;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;;11059:14;11039:55;;;;;;:::i;:::-;;;;;;;;;11075:18;11039:55;;;;;;:::i;:::-;;;;;;;;10659:442:::0;;:::o;1634:27::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1634:27:71;;-1:-1:-1;1634:27:71;:::o;1405:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1558:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1503:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1597:30::-;;;;;;;;;;;;5086:180;1334:13:37;:11;:13::i;:::-;5179::71::1;:30:::0;;-1:-1:-1;;;;;;5179:30:71::1;-1:-1:-1::0;;;;;5179:30:71;::::1;::::0;;::::1;::::0;;;5224:35:::1;::::0;::::1;::::0;-1:-1:-1;;5224:35:71::1;5086:180:::0;:::o;15994:111::-;16053:16;16088:10;16081:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16081:17:71;;;;;;;;;;;;;;;;;;;;;;;15994:111;:::o;2321:198:37:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:37;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:37;;31325:2:120;2401:73:37::1;::::0;::::1;31307:21:120::0;31364:2;31344:18;;;31337:30;31403:34;31383:18;;;31376:62;-1:-1:-1;;;31454:18:120;;;31447:36;31500:19;;2401:73:37::1;31123:402:120::0;2401:73:37::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;4320:162:71:-;1334:13:37;:11;:13::i;:::-;4407:10:71::1;:24:::0;;-1:-1:-1;;;;;;4407:24:71::1;-1:-1:-1::0;;;;;4407:24:71;::::1;::::0;;::::1;::::0;;;4446:29:::1;::::0;::::1;::::0;-1:-1:-1;;4446:29:71::1;4320:162:::0;:::o;1599:130:37:-;1513:6;;-1:-1:-1;;;;;1513:6:37;929:10:40;1662:23:37;1654:68;;;;-1:-1:-1;;;1654:68:37;;31732:2:120;1654:68:37;;;31714:21:120;;;31751:18;;;31744:30;31810:34;31790:18;;;31783:62;31862:18;;1654:68:37;31530:356:120;4402:227:55;4480:7;4500:17;4519:18;4541:27;4552:4;4558:9;4541:10;:27::i;:::-;4499:69;;;;4578:18;4590:5;4578:11;:18::i;:::-;-1:-1:-1;4613:9:55;4402:227;-1:-1:-1;;;4402:227:55:o;2673:187:37:-;2765:6;;;-1:-1:-1;;;;;2781:17:37;;;-1:-1:-1;;;;;;2781:17:37;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;2243:1373:55:-;2324:7;2333:12;2554:9;:16;2574:2;2554:22;2550:1060;;;2890:4;2875:20;;2869:27;2939:4;2924:20;;2918:27;2996:4;2981:20;;2975:27;2592:9;2967:36;3037:25;3048:4;2967:36;2869:27;2918;3037:10;:25::i;:::-;3030:32;;;;;;;;;2550:1060;3083:9;:16;3103:2;3083:22;3079:531;;;3399:4;3384:20;;3378:27;3449:4;3434:20;;3428:27;3489:23;3500:4;3378:27;3428;3489:10;:23::i;:::-;3482:30;;;;;;;;3079:531;-1:-1:-1;3559:1:55;;-1:-1:-1;3563:35:55;3079:531;2243:1373;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:55;;32093:2:120;766:34:55;;;32075:21:120;32132:2;32112:18;;;32105:30;32171:26;32151:18;;;32144:54;32215:18;;766:34:55;31891:348:120;708:465:55;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:55;;32446:2:120;881:41:55;;;32428:21:120;32485:2;32465:18;;;32458:30;32524:33;32504:18;;;32497:61;32575:18;;881:41:55;32244:355:120;817:356:55;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:55;;32806:2:120;998:44:55;;;32788:21:120;32845:2;32825:18;;;32818:30;32884:34;32864:18;;;32857:62;-1:-1:-1;;;32935:18:120;;;32928:32;32977:19;;998:44:55;32604:398:120;939:234:55;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:55;;33209:2:120;1118:44:55;;;33191:21:120;33248:2;33228:18;;;33221:30;33287:34;33267:18;;;33260:62;-1:-1:-1;;;33338:18:120;;;33331:32;33380:19;;1118:44:55;33007:398:120;5810:1603:55;5936:7;;6860:66;6847:79;;6843:161;;;-1:-1:-1;6958:1:55;;-1:-1:-1;6962:30:55;6942:51;;6843:161;7017:1;:7;;7022:2;7017:7;;:18;;;;;7028:1;:7;;7033:2;7028:7;;7017:18;7013:100;;;-1:-1:-1;7067:1:55;;-1:-1:-1;7071:30:55;7051:51;;7013:100;7224:24;;;7207:14;7224:24;;;;;;;;;33637:25:120;;;33710:4;33698:17;;33678:18;;;33671:45;;;;33732:18;;;33725:34;;;33775:18;;;33768:34;;;7224:24:55;;33609:19:120;;7224:24:55;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7224:24:55;;-1:-1:-1;;7224:24:55;;;-1:-1:-1;;;;;;;7262:20:55;;7258:101;;7314:1;7318:29;7298:50;;;;;;;7258:101;7377:6;-1:-1:-1;7385:20:55;;-1:-1:-1;5810:1603:55;;;;;;;;:::o;4883:336::-;4993:7;;-1:-1:-1;;;;;5038:80:55;;4993:7;5144:25;5160:3;5145:18;;;5167:2;5144:25;:::i;:::-;5128:42;;5187:25;5198:4;5204:1;5207;5210;5187:10;:25::i;:::-;5180:32;;;;;;4883:336;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:120;-1:-1:-1;;;;;89:31:120;;79:42;;69:70;;135:1;132;125:12;150:388;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;-1:-1:-1;460:2:120;445:18;;432:32;473:33;432:32;473:33;:::i;:::-;525:7;515:17;;;150:388;;;;;:::o;543:258::-;615:1;625:113;639:6;636:1;633:13;625:113;;;715:11;;;709:18;696:11;;;689:39;661:2;654:10;625:113;;;756:6;753:1;750:13;747:48;;;791:1;782:6;777:3;773:16;766:27;747:48;;543:258;;;:::o;806:::-;848:3;886:5;880:12;913:6;908:3;901:19;929:63;985:6;978:4;973:3;969:14;962:4;955:5;951:16;929:63;:::i;:::-;1046:2;1025:15;-1:-1:-1;;1021:29:120;1012:39;;;;1053:4;1008:50;;806:258;-1:-1:-1;;806:258:120:o;1069:803::-;1231:4;1260:2;1300;1289:9;1285:18;1330:2;1319:9;1312:21;1353:6;1388;1382:13;1419:6;1411;1404:22;1457:2;1446:9;1442:18;1435:25;;1519:2;1509:6;1506:1;1502:14;1491:9;1487:30;1483:39;1469:53;;1557:2;1549:6;1545:15;1578:1;1588:255;1602:6;1599:1;1596:13;1588:255;;;1695:2;1691:7;1679:9;1671:6;1667:22;1663:36;1658:3;1651:49;1723:40;1756:6;1747;1741:13;1723:40;:::i;:::-;1713:50;-1:-1:-1;1821:12:120;;;;1786:15;;;;1624:1;1617:9;1588:255;;;-1:-1:-1;1860:6:120;;1069:803;-1:-1:-1;;;;;;;1069:803:120:o;1877:247::-;1936:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:52;;;2005:1;2002;1995:12;1957:52;2044:9;2031:23;2063:31;2088:5;2063:31;:::i;:::-;2113:5;1877:247;-1:-1:-1;;;1877:247:120:o;2337:127::-;2398:10;2393:3;2389:20;2386:1;2379:31;2429:4;2426:1;2419:15;2453:4;2450:1;2443:15;2469:419;2661:25;;;2649:2;2634:18;;2716:1;2705:13;;2695:144;;2761:10;2756:3;2752:20;2749:1;2742:31;2796:4;2793:1;2786:15;2824:4;2821:1;2814:15;2695:144;2875:6;2870:2;2859:9;2855:18;2848:34;2469:419;;;;;:::o;2893:127::-;2954:10;2949:3;2945:20;2942:1;2935:31;2985:4;2982:1;2975:15;3009:4;3006:1;2999:15;3025:275;3096:2;3090:9;3161:2;3142:13;;-1:-1:-1;;3138:27:120;3126:40;;-1:-1:-1;;;;;3181:34:120;;3217:22;;;3178:62;3175:88;;;3243:18;;:::i;:::-;3279:2;3272:22;3025:275;;-1:-1:-1;3025:275:120:o;3305:531::-;3348:5;3401:3;3394:4;3386:6;3382:17;3378:27;3368:55;;3419:1;3416;3409:12;3368:55;3455:6;3442:20;-1:-1:-1;;;;;3477:2:120;3474:26;3471:52;;;3503:18;;:::i;:::-;3547:55;3590:2;3571:13;;-1:-1:-1;;3567:27:120;3596:4;3563:38;3547:55;:::i;:::-;3627:2;3618:7;3611:19;3673:3;3666:4;3661:2;3653:6;3649:15;3645:26;3642:35;3639:55;;;3690:1;3687;3680:12;3639:55;3755:2;3748:4;3740:6;3736:17;3729:4;3720:7;3716:18;3703:55;3803:1;3778:16;;;3796:4;3774:27;3767:38;;;;3782:7;3305:531;-1:-1:-1;;;3305:531:120:o;3841:457::-;3919:6;3927;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;4035:9;4022:23;4054:31;4079:5;4054:31;:::i;:::-;4104:5;-1:-1:-1;4160:2:120;4145:18;;4132:32;-1:-1:-1;;;;;4176:30:120;;4173:50;;;4219:1;4216;4209:12;4173:50;4242;4284:7;4275:6;4264:9;4260:22;4242:50;:::i;:::-;4232:60;;;3841:457;;;;;:::o;4495:153::-;4552:5;4597:3;4588:6;4583:3;4579:16;4575:26;4572:46;;;4614:1;4611;4604:12;4572:46;-1:-1:-1;4636:6:120;4495:153;-1:-1:-1;4495:153:120:o;4653:183::-;4713:4;-1:-1:-1;;;;;4738:6:120;4735:30;4732:56;;;4768:18;;:::i;:::-;-1:-1:-1;4813:1:120;4809:14;4825:4;4805:25;;4653:183::o;4841:887::-;4893:5;4946:3;4939:4;4931:6;4927:17;4923:27;4913:55;;4964:1;4961;4954:12;4913:55;5000:6;4987:20;5026:4;5050:60;5066:43;5106:2;5066:43;:::i;:::-;5050:60;:::i;:::-;5144:15;;;5230:1;5226:10;;;;5214:23;;5210:32;;;5175:12;;;;5254:15;;;5251:35;;;5282:1;5279;5272:12;5251:35;5318:2;5310:6;5306:15;5330:369;5346:6;5341:3;5338:15;5330:369;;;5432:3;5419:17;-1:-1:-1;;;;;5455:11:120;5452:35;5449:125;;;5528:1;5557:2;5553;5546:14;5449:125;5599:57;5652:3;5647:2;5633:11;5625:6;5621:24;5617:33;5599:57;:::i;:::-;5587:70;;-1:-1:-1;5677:12:120;;;;5363;;5330:369;;;-1:-1:-1;5717:5:120;4841:887;-1:-1:-1;;;;;;4841:887:120:o;5733:1449::-;5894:6;5902;5910;5963:2;5951:9;5942:7;5938:23;5934:32;5931:52;;;5979:1;5976;5969:12;5931:52;6019:9;6006:23;-1:-1:-1;;;;;6089:2:120;6081:6;6078:14;6075:34;;;6105:1;6102;6095:12;6075:34;6128:64;6184:7;6175:6;6164:9;6160:22;6128:64;:::i;:::-;6118:74;;6211:2;6201:12;;6266:2;6255:9;6251:18;6238:32;6295:2;6285:8;6282:16;6279:36;;;6311:1;6308;6301:12;6279:36;6334:24;;6389:4;6381:13;;6377:27;-1:-1:-1;6367:55:120;;6418:1;6415;6408:12;6367:55;6454:2;6441:16;6477:60;6493:43;6533:2;6493:43;:::i;6477:60::-;6571:15;;;6653:1;6649:10;;;;6641:19;;6637:28;;;6602:12;;;;6677:19;;;6674:39;;;6709:1;6706;6699:12;6674:39;6733:11;;;;6753:217;6769:6;6764:3;6761:15;6753:217;;;6849:3;6836:17;6866:31;6891:5;6866:31;:::i;:::-;6910:18;;6786:12;;;;6948;;;;6753:217;;;6989:5;-1:-1:-1;;;;7047:2:120;7032:18;;7019:32;;-1:-1:-1;7063:16:120;;;7060:36;;;7092:1;7089;7082:12;7060:36;;7115:61;7168:7;7157:8;7146:9;7142:24;7115:61;:::i;:::-;7105:71;;;5733:1449;;;;;:::o;7369:461::-;7422:3;7460:5;7454:12;7487:6;7482:3;7475:19;7513:4;7542:2;7537:3;7533:12;7526:19;;7579:2;7572:5;7568:14;7600:1;7610:195;7624:6;7621:1;7618:13;7610:195;;;7689:13;;-1:-1:-1;;;;;7685:39:120;7673:52;;7745:12;;;;7780:15;;;;7721:1;7639:9;7610:195;;;-1:-1:-1;7821:3:120;;7369:461;-1:-1:-1;;;;;7369:461:120:o;7835:261::-;8014:2;8003:9;7996:21;7977:4;8034:56;8086:2;8075:9;8071:18;8063:6;8034:56;:::i;8101:322::-;8170:6;8223:2;8211:9;8202:7;8198:23;8194:32;8191:52;;;8239:1;8236;8229:12;8191:52;8279:9;8266:23;-1:-1:-1;;;;;8304:6:120;8301:30;8298:50;;;8344:1;8341;8334:12;8298:50;8367;8409:7;8400:6;8389:9;8385:22;8367:50;:::i;:::-;8357:60;8101:322;-1:-1:-1;;;;8101:322:120:o;8428:386::-;8510:8;8520:6;8574:3;8567:4;8559:6;8555:17;8551:27;8541:55;;8592:1;8589;8582:12;8541:55;-1:-1:-1;8615:20:120;;-1:-1:-1;;;;;8647:30:120;;8644:50;;;8690:1;8687;8680:12;8644:50;8727:4;8719:6;8715:17;8703:29;;8787:3;8780:4;8770:6;8767:1;8763:14;8755:6;8751:27;8747:38;8744:47;8741:67;;;8804:1;8801;8794:12;8819:952;8952:6;8960;8968;8976;9029:2;9017:9;9008:7;9004:23;9000:32;8997:52;;;9045:1;9042;9035:12;8997:52;9085:9;9072:23;-1:-1:-1;;;;;9155:2:120;9147:6;9144:14;9141:34;;;9171:1;9168;9161:12;9141:34;9210:89;9291:7;9282:6;9271:9;9267:22;9210:89;:::i;:::-;9318:8;;-1:-1:-1;9184:115:120;-1:-1:-1;9406:2:120;9391:18;;9378:32;;-1:-1:-1;9422:16:120;;;9419:36;;;9451:1;9448;9441:12;9419:36;9489:8;9478:9;9474:24;9464:34;;9536:7;9529:4;9525:2;9521:13;9517:27;9507:55;;9558:1;9555;9548:12;9507:55;9598:2;9585:16;9624:2;9616:6;9613:14;9610:34;;;9640:1;9637;9630:12;9610:34;9685:7;9680:2;9671:6;9667:2;9663:15;9659:24;9656:37;9653:57;;;9706:1;9703;9696:12;9653:57;8819:952;;;;-1:-1:-1;;9737:2:120;9729:11;;-1:-1:-1;;;8819:952:120:o;9776:480::-;9851:6;9859;9867;9920:2;9908:9;9899:7;9895:23;9891:32;9888:52;;;9936:1;9933;9926:12;9888:52;9975:9;9962:23;9994:31;10019:5;9994:31;:::i;:::-;10044:5;-1:-1:-1;10101:2:120;10086:18;;10073:32;10149:4;10136:18;;10124:31;;10114:59;;10169:1;10166;10159:12;10114:59;9776:480;;10192:7;;-1:-1:-1;;;10246:2:120;10231:18;;;;10218:32;;9776:480::o;10261:456::-;10347:6;10355;10408:2;10396:9;10387:7;10383:23;10379:32;10376:52;;;10424:1;10421;10414:12;10376:52;10464:9;10451:23;-1:-1:-1;;;;;10489:6:120;10486:30;10483:50;;;10529:1;10526;10519:12;10483:50;10568:89;10649:7;10640:6;10629:9;10625:22;10568:89;:::i;:::-;10676:8;;10542:115;;-1:-1:-1;10261:456:120;-1:-1:-1;;;;10261:456:120:o;10722:180::-;10781:6;10834:2;10822:9;10813:7;10809:23;10805:32;10802:52;;;10850:1;10847;10840:12;10802:52;-1:-1:-1;10873:23:120;;10722:180;-1:-1:-1;10722:180:120:o;10907:351::-;10991:6;11044:2;11032:9;11023:7;11019:23;11015:32;11012:52;;;11060:1;11057;11050:12;11012:52;11100:9;11087:23;-1:-1:-1;;;;;11125:6:120;11122:30;11119:50;;;11165:1;11162;11155:12;11119:50;11188:64;11244:7;11235:6;11224:9;11220:22;11188:64;:::i;11445:882::-;11549:6;11557;11565;11573;11581;11589;11642:3;11630:9;11621:7;11617:23;11613:33;11610:53;;;11659:1;11656;11649:12;11610:53;11698:9;11685:23;11717:31;11742:5;11717:31;:::i;:::-;11767:5;-1:-1:-1;11824:2:120;11809:18;;11796:32;11837:33;11796:32;11837:33;:::i;:::-;11889:7;-1:-1:-1;11948:2:120;11933:18;;11920:32;11961:33;11920:32;11961:33;:::i;:::-;12013:7;-1:-1:-1;12072:2:120;12057:18;;12044:32;12085:33;12044:32;12085:33;:::i;:::-;12137:7;-1:-1:-1;12196:3:120;12181:19;;12168:33;12210;12168;12210;:::i;:::-;12262:7;12252:17;;;12316:3;12305:9;12301:19;12288:33;12278:43;;11445:882;;;;;;;;:::o;12332:1027::-;12444:6;12452;12505:2;12493:9;12484:7;12480:23;12476:32;12473:52;;;12521:1;12518;12511:12;12473:52;12560:9;12547:23;12579:31;12604:5;12579:31;:::i;:::-;12629:5;-1:-1:-1;12685:2:120;12670:18;;12657:32;-1:-1:-1;;;;;12738:14:120;;;12735:34;;;12765:1;12762;12755:12;12735:34;12788:22;;;;12844:4;12826:16;;;12822:27;12819:47;;;12862:1;12859;12852:12;12819:47;12895:2;12889:9;12937:4;12929:6;12925:17;12992:6;12980:10;12977:22;12972:2;12960:10;12957:18;12954:46;12951:72;;;13003:18;;:::i;:::-;13039:2;13032:22;13079:16;;13107;;;13104:36;;;13136:1;13133;13126:12;13104:36;13164:45;13201:7;13190:8;13186:2;13182:17;13164:45;:::i;:::-;13156:6;13149:61;;13264:2;13260;13256:11;13243:25;13238:2;13230:6;13226:15;13219:50;13323:2;13319;13315:11;13302:25;13297:2;13289:6;13285:15;13278:50;13347:6;13337:16;;;;;12332:1027;;;;;:::o;13364:611::-;13461:6;13469;13477;13530:2;13518:9;13509:7;13505:23;13501:32;13498:52;;;13546:1;13543;13536:12;13498:52;13586:9;13573:23;-1:-1:-1;;;;;13656:2:120;13648:6;13645:14;13642:34;;;13672:1;13669;13662:12;13642:34;13695:50;13737:7;13728:6;13717:9;13713:22;13695:50;:::i;:::-;13685:60;;13798:2;13787:9;13783:18;13770:32;13754:48;;13827:2;13817:8;13814:16;13811:36;;;13843:1;13840;13833:12;13811:36;;13866:52;13910:7;13899:8;13888:9;13884:24;13866:52;:::i;:::-;13856:62;;;13965:2;13954:9;13950:18;13937:32;13927:42;;13364:611;;;;;:::o;13980:543::-;14068:6;14076;14129:2;14117:9;14108:7;14104:23;14100:32;14097:52;;;14145:1;14142;14135:12;14097:52;14185:9;14172:23;-1:-1:-1;;;;;14255:2:120;14247:6;14244:14;14241:34;;;14271:1;14268;14261:12;14241:34;14294:50;14336:7;14327:6;14316:9;14312:22;14294:50;:::i;:::-;14284:60;;14397:2;14386:9;14382:18;14369:32;14353:48;;14426:2;14416:8;14413:16;14410:36;;;14442:1;14439;14432:12;14410:36;;14465:52;14509:7;14498:8;14487:9;14483:24;14465:52;:::i;14528:220::-;14677:2;14666:9;14659:21;14640:4;14697:45;14738:2;14727:9;14723:18;14715:6;14697:45;:::i;15726:380::-;15805:1;15801:12;;;;15848;;;15869:61;;15923:4;15915:6;15911:17;15901:27;;15869:61;15976:2;15968:6;15965:14;15945:18;15942:38;15939:161;;;16022:10;16017:3;16013:20;16010:1;16003:31;16057:4;16054:1;16047:15;16085:4;16082:1;16075:15;16111:127;16172:10;16167:3;16163:20;16160:1;16153:31;16203:4;16200:1;16193:15;16227:4;16224:1;16217:15;16243:127;16304:10;16299:3;16295:20;16292:1;16285:31;16335:4;16332:1;16325:15;16359:4;16356:1;16349:15;16375:125;16415:4;16443:1;16440;16437:8;16434:34;;;16448:18;;:::i;:::-;-1:-1:-1;16485:9:120;;16375:125::o;16505:127::-;16566:10;16561:3;16557:20;16554:1;16547:31;16597:4;16594:1;16587:15;16621:4;16618:1;16611:15;16637:276;16695:6;16748:2;16736:9;16727:7;16723:23;16719:32;16716:52;;;16764:1;16761;16754:12;16716:52;16803:9;16790:23;16853:10;16846:5;16842:22;16835:5;16832:33;16822:61;;16879:1;16876;16869:12;18228:522;18306:4;18312:6;18372:11;18359:25;18466:2;18462:7;18451:8;18435:14;18431:29;18427:43;18407:18;18403:68;18393:96;;18485:1;18482;18475:12;18393:96;18512:33;;18564:20;;;-1:-1:-1;;;;;;18596:30:120;;18593:50;;;18639:1;18636;18629:12;18593:50;18672:4;18660:17;;-1:-1:-1;18703:14:120;18699:27;;;18689:38;;18686:58;;;18740:1;18737;18730:12;18755:273;18940:6;18932;18927:3;18914:33;18896:3;18966:16;;18991:13;;;18966:16;18755:273;-1:-1:-1;18755:273:120:o;21169:267::-;21258:6;21253:3;21246:19;21310:6;21303:5;21296:4;21291:3;21287:14;21274:43;-1:-1:-1;21362:1:120;21337:16;;;21355:4;21333:27;;;21326:38;;;;21418:2;21397:15;;;-1:-1:-1;;21393:29:120;21384:39;;;21380:50;;21169:267::o;21441:801::-;21790:3;21779:9;21772:22;21753:4;21817:63;21875:3;21864:9;21860:19;21852:6;21844;21817:63;:::i;:::-;21928:9;21920:6;21916:22;21911:2;21900:9;21896:18;21889:50;21962;22005:6;21997;21989;21962:50;:::i;:::-;21948:64;;22060:10;22052:6;22048:23;22043:2;22032:9;22028:18;22021:51;22108:6;22103:2;22092:9;22088:18;22081:34;22164:9;22156:6;22152:22;22146:3;22135:9;22131:19;22124:51;22192:44;22229:6;22221;22192:44;:::i;:::-;22184:52;21441:801;-1:-1:-1;;;;;;;;;;21441:801:120:o;22574:184::-;22644:6;22697:2;22685:9;22676:7;22672:23;22668:32;22665:52;;;22713:1;22710;22703:12;22665:52;-1:-1:-1;22736:16:120;;22574:184;-1:-1:-1;22574:184:120:o;22763:135::-;22802:3;-1:-1:-1;;22823:17:120;;22820:43;;;22843:18;;:::i;:::-;-1:-1:-1;22890:1:120;22879:13;;22763:135::o;22903:276::-;23034:3;23072:6;23066:13;23088:53;23134:6;23129:3;23122:4;23114:6;23110:17;23088:53;:::i;:::-;23157:16;;;;;22903:276;-1:-1:-1;;22903:276:120:o;23184:545::-;23277:4;23283:6;23343:11;23330:25;23437:2;23433:7;23422:8;23406:14;23402:29;23398:43;23378:18;23374:68;23364:96;;23456:1;23453;23446:12;23364:96;23483:33;;23535:20;;;-1:-1:-1;;;;;;23567:30:120;;23564:50;;;23610:1;23607;23600:12;23564:50;23643:4;23631:17;;-1:-1:-1;23694:1:120;23690:14;;;23674;23670:35;23660:46;;23657:66;;;23719:1;23716;23709:12;23734:128;23774:3;23805:1;23801:6;23798:1;23795:13;23792:39;;;23811:18;;:::i;:::-;-1:-1:-1;23847:9:120;;23734:128::o;24143:1395::-;24366:3;24397;24444:6;24366:3;24478:1033;24492:6;24489:1;24486:13;24478:1033;;;24580:6;24567:20;24671:2;24667:7;24658:6;24642:14;24638:27;24634:41;24614:18;24610:66;24600:94;;24690:1;24687;24680:12;24600:94;24720:31;;24778:19;;24820:4;-1:-1:-1;;;;;24840:30:120;;24837:50;;;24883:1;24880;24873:12;24837:50;24942:6;24939:1;24935:14;24919;24915:35;24907:6;24903:48;24900:68;;;24964:1;24961;24954:12;24900:68;25055:14;;;;24994:5;25093:1;25107:329;25123:6;25118:3;25115:15;25107:329;;;25212:8;25199:22;25238:33;25263:7;25238:33;:::i;:::-;-1:-1:-1;;;;;25302:33:120;25288:48;;25405:17;;;;25362:14;;;;25332:1;25140:11;25107:329;;;-1:-1:-1;25458:5:120;-1:-1:-1;25486:15:120;;;;;-1:-1:-1;;24514:1:120;24507:9;24478:1033;;;-1:-1:-1;25527:5:120;;24143:1395;-1:-1:-1;;;;;24143:1395:120:o;25803:697::-;25906:6;25959:2;25947:9;25938:7;25934:23;25930:32;25927:52;;;25975:1;25972;25965:12;25927:52;26008:2;26002:9;26050:2;26042:6;26038:15;26119:6;26107:10;26104:22;-1:-1:-1;;;;;26071:10:120;26068:34;26065:62;26062:88;;;26130:18;;:::i;:::-;26166:2;26159:22;26203:16;;26228:31;26203:16;26228:31;:::i;:::-;26268:21;;26334:2;26319:18;;26313:25;26382:26;26369:40;;26357:53;;26347:81;;26424:1;26421;26414:12;26347:81;26456:2;26444:15;;26437:32;26448:6;25803:697;-1:-1:-1;;;25803:697:120:o;27031:1059::-;27443:3;27432:9;27425:22;27406:4;27470:63;27528:3;27517:9;27513:19;27505:6;27497;27470:63;:::i;:::-;-1:-1:-1;;;;;27607:15:120;;;27602:2;27587:18;;27580:43;27659:15;;27654:2;27639:18;;27632:43;27706:2;27691:18;;27684:34;;;27755:22;;;27749:3;27734:19;;27727:51;27801:50;27759:6;27836;27828;27801:50;:::i;:::-;27787:64;;27900:9;27892:6;27888:22;27882:3;27871:9;27867:19;27860:51;27928:50;27971:6;27963;27955;27928:50;:::i;:::-;28027:10;28015:23;;;;28009:3;27994:19;;27987:52;-1:-1:-1;;28070:3:120;28055:19;28048:36;27920:58;27031:1059;-1:-1:-1;;;;;;;;;27031:1059:120:o;29183:625::-;29457:1;29453;29448:3;29444:11;29440:19;29432:6;29428:32;29417:9;29410:51;29497:2;29492;29481:9;29477:18;29470:30;29391:4;29535:6;29529:13;29578:4;29573:2;29562:9;29558:18;29551:32;29606:52;29653:3;29642:9;29638:19;29624:12;29606:52;:::i;:::-;29592:66;;29714:2;29706:6;29702:15;29696:22;29689:4;29678:9;29674:20;29667:52;29774:2;29766:6;29762:15;29756:22;29750:3;29739:9;29735:19;29728:51;29796:6;29788:14;;;29183:625;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"addPermissionedOperators(address[])":"8376f7f8","addStrategy(address,uint8,uint256)":"66f17e73","aggregator()":"245a7bfc","avsDirectory()":"6b3aa72e","clientToPolicy(address,string)":"140a16bc","delegationManager()":"ea4d3c9b","deployPolicy(string,string,uint256)":"c0443c5f","deploySocialGraph(string,string)":"d20e78c9","deployedPolicyIDs(uint256)":"ddb49ce1","deregisterOperatorFromAVS(address)":"a364f4da","getDeployedPolicies()":"0b3ce015","getOperatorRestakedStrategies(address)":"33cfb7b7","getRestakeableStrategies()":"e481af9d","getSocialGraphIDs()":"d18a1325","hashTaskWithExpiry((string,address,address,uint256,bytes,string,uint32,uint256))":"949528fc","idToPolicy(string)":"d9d4e99f","idToSocialGraph(string)":"ddf6a51b","initialize(address,address,address,address,address,uint256)":"95b6ef0c","operators(address)":"13e7c9d8","owner()":"8da5cb5b","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","removePermissionedOperators(address[])":"786bf3c3","removePolicy(string)":"34099ba1","removeStrategy(address)":"175188e8","renounceOwnership()":"715018a6","rotatePredicateSigningKey(address,address)":"001ba1eb","setAVSDirectory(address)":"862621ef","setAggregator(address)":"f9120af6","setDelegationManager(address)":"1a8d0de2","setMetadataURI(string)":"750521f5","setPolicy(string)":"6b4c991b","setStakeRegistry(address)":"e3b05f2f","setThresholdStake(uint256)":"8ad96602","signingKeyToOperator(address)":"0ff26fd1","socialGraphIDs(uint256)":"df935065","spentTaskIds(string)":"749dccc7","stakeRegistry()":"68304835","strategies(uint256)":"d574ea3d","thresholdStake()":"20af7390","transferOwnership(address)":"f2fde38b","updateOperatorsForQuorum(address[][],bytes)":"5140a548","validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])":"18cea58d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ServiceManager__ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceManager__InvalidOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceManager__InvalidStrategy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceManager__Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avsDirectory\",\"type\":\"address\"}],\"name\":\"AVSDirectoryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"AggregatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegationManager\",\"type\":\"address\"}],\"name\":\"DelegationManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"DeployedPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskID\",\"type\":\"uint256\"}],\"name\":\"NonCompliantTask\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"}],\"name\":\"RemovedPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"socialGraphID\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"socialGraphConfig\",\"type\":\"string\"}],\"name\":\"SocialGraphDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakeRegistry\",\"type\":\"address\"}],\"name\":\"StakeRegistryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"quorumThresholdCount\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expireByBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signerAddresses\",\"type\":\"address[]\"}],\"name\":\"TaskValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"thresholdStake\",\"type\":\"uint256\"}],\"name\":\"ThresholdStakeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_operators\",\"type\":\"address[]\"}],\"name\":\"addPermissionedOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"addStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"aggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"avsDirectory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"clientToPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_policy\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_quorumThreshold\",\"type\":\"uint256\"}],\"name\":\"deployPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_socialGraphID\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_socialGraphConfig\",\"type\":\"string\"}],\"name\":\"deploySocialGraph\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"deployedPolicyIDs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeployedPolicies\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSocialGraphIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedSigAndArgs\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"quorumThresholdCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"expireByBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct Task\",\"name\":\"_task\",\"type\":\"tuple\"}],\"name\":\"hashTaskWithExpiry\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"idToPolicy\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"idToSocialGraph\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_aggregator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakeRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_avsDirectory\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_thresholdStake\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalStake\",\"type\":\"uint256\"},{\"internalType\":\"enum ServiceManager.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorSigningKey\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"_operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_operators\",\"type\":\"address[]\"}],\"name\":\"removePermissionedOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"}],\"name\":\"removePolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_strategy\",\"type\":\"address\"}],\"name\":\"removeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oldSigningKey\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_newSigningKey\",\"type\":\"address\"}],\"name\":\"rotatePredicateSigningKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_avsDirectory\",\"type\":\"address\"}],\"name\":\"setAVSDirectory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregator\",\"type\":\"address\"}],\"name\":\"setAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegationManager\",\"type\":\"address\"}],\"name\":\"setDelegationManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"setMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_policyID\",\"type\":\"string\"}],\"name\":\"setPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakeRegistry\",\"type\":\"address\"}],\"name\":\"setStakeRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_thresholdStake\",\"type\":\"uint256\"}],\"name\":\"setThresholdStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"signingKeyToOperator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"socialGraphIDs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"spentTaskIds\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"thresholdStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"updateOperatorsForQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedSigAndArgs\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"quorumThresholdCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"expireByBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct Task\",\"name\":\"_task\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"signerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"validateSignatures\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isVerified\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPermissionedOperators(address[])\":{\"details\":\"only callable by the owner\",\"params\":{\"_operators\":\"is the address[] to be permissioned for registration on the AVS\"}},\"addStrategy(address,uint8,uint256)\":{\"params\":{\"_strategy\":\"address of the strategy to add\",\"index\":\"uint256 denoting the index for the strategy\",\"quorumNumber\":\"uint8 denoting the quorum number\"}},\"deployPolicy(string,string,uint256)\":{\"params\":{\"_policy\":\"is set of formatted rules\",\"_policyID\":\"is a unique identifier\"}},\"deploySocialGraph(string,string)\":{\"params\":{\"_socialGraphConfig\":\"is the config for the social graph\",\"_socialGraphID\":\"is a unique identifier\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"_operator\":\"the address of the operator to be removed\"}},\"getDeployedPolicies()\":{\"returns\":{\"_0\":\"array of deployed policies\"}},\"getOperatorRestakedStrategies(address)\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately\",\"params\":{\"operator\":\"The address of the operator to get restaked strategies for\"}},\"getRestakeableStrategies()\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately\"},\"getSocialGraphIDs()\":{\"returns\":{\"_0\":\"array of social graph IDs\"}},\"hashTaskWithExpiry((string,address,address,uint256,bytes,string,uint32,uint256))\":{\"params\":{\"_task\":\"parameters of the task\"},\"returns\":{\"_0\":\"the keccak256 digest of the task\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"_operatorSignature\":\"signature used for validation\",\"_operatorSigningKey\":\"address of the operator signing key\"}},\"removePermissionedOperators(address[])\":{\"details\":\"only callable by the owner\",\"params\":{\"_operators\":\"is the address[] to have permission revoked for registration on the AVS\"}},\"removePolicy(string)\":{\"params\":{\"_policyID\":\"address of the Pod\"}},\"removeStrategy(address)\":{\"params\":{\"_strategy\":\"address of the strategy to be removed\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"rotatePredicateSigningKey(address,address)\":{\"params\":{\"_newSigningKey\":\"address of the new signing key to add\",\"_oldSigningKey\":\"address of the old signing key to remove\"}},\"setAVSDirectory(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_avsDirectory\":\"is the avsDirectory on the eigenlayer contracts\"}},\"setAggregator(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_aggregator\":\"is the aggregator that can execute the callback\"}},\"setDelegationManager(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_delegationManager\":\"is the delegationManager on the eigenlayer contracts\"}},\"setMetadataURI(string)\":{\"details\":\"only callable by the owner\",\"params\":{\"_metadataURI\":\"is the metadata URI for the AVS\"}},\"setPolicy(string)\":{\"params\":{\"_policyID\":\"address of the Pod\"}},\"setStakeRegistry(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_stakeRegistry\":\"is the stakeRegistry on the eigenlayer contracts\"}},\"setThresholdStake(uint256)\":{\"details\":\"Has modifiers: onlyOwner.\",\"params\":{\"_thresholdStake\":\"The threshold stake (uint256).\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateOperatorsForQuorum(address[][],bytes)\":{\"details\":\"This method is used to update the stakes of all operators in a quorum at once, rather than individually. Performs sanitization checks on the input array lengths, quorumNumbers existing, and that quorumNumbers are ordered. Function must also not be paused by the PAUSED_UPDATE_OPERATOR flag.\",\"params\":{\"operatorsPerQuorum\":\"is an array of arrays of operators to update for each quorum. Note that each nested array of operators must be sorted in ascending address order to ensure that all operators in the quorum are updated\",\"quorumNumbers\":\"is an array of quorum numbers to update\"}},\"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])\":{\"params\":{\"_task\":\"the params of the task\",\"signatures\":\"the signatures of the operators\",\"signerAddresses\":\"the addresses of the operators\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addPermissionedOperators(address[])\":{\"notice\":\"Adds permissioned operators to the set for the AVS\"},\"addStrategy(address,uint8,uint256)\":{\"notice\":\"Adds a new strategy\"},\"deployPolicy(string,string,uint256)\":{\"notice\":\"Deploys a policy for which clients can use\"},\"deploySocialGraph(string,string)\":{\"notice\":\"Deploys a social graph which clients can use in policy\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Removes an operator\"},\"getDeployedPolicies()\":{\"notice\":\"Gets array of deployed policies\"},\"getOperatorRestakedStrategies(address)\":{\"notice\":\"Returns the list of strategies that the operator has potentially restaked on the AVS\"},\"getRestakeableStrategies()\":{\"notice\":\"Returns the list of strategies that the AVS supports for restaking\"},\"getSocialGraphIDs()\":{\"notice\":\"Gets array of social graph IDs\"},\"hashTaskWithExpiry((string,address,address,uint256,bytes,string,uint32,uint256))\":{\"notice\":\"Performs the hashing of an STM task\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Registers a new operator\"},\"removePermissionedOperators(address[])\":{\"notice\":\"Removes permissioned operators from the set for the AVS\"},\"removePolicy(string)\":{\"notice\":\"Removes a policy for a client\"},\"removeStrategy(address)\":{\"notice\":\"Removes a strategy\"},\"rotatePredicateSigningKey(address,address)\":{\"notice\":\"Enables the rotation of Predicate Signing Key for an operator\"},\"setAVSDirectory(address)\":{\"notice\":\"Sets the avsDirectory contract address\"},\"setAggregator(address)\":{\"notice\":\"Sets the aggregator address on contracts\"},\"setDelegationManager(address)\":{\"notice\":\"Sets the delegationManager contract address\"},\"setMetadataURI(string)\":{\"notice\":\"Sets the metadata URI for the AVS\"},\"setPolicy(string)\":{\"notice\":\"Sets a policy for a client\"},\"setStakeRegistry(address)\":{\"notice\":\"Sets the stakeRegistry contract address\"},\"setThresholdStake(uint256)\":{\"notice\":\"Sets threshold stake.\"},\"updateOperatorsForQuorum(address[][],bytes)\":{\"notice\":\"Updates the stakes of all operators for each of the specified quorums in the StakeRegistry. Each quorum also has their quorumUpdateBlockNumber updated. which is meant to keep track of when operators were last all updated at once.\"},\"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])\":{\"notice\":\"Validates signatures using the OpenZeppelin ECDSA library for the Predicate Single Transaction Model\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ServiceManager.sol\":\"ServiceManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ServiceManager__ArrayLengthMismatch"},{"inputs":[],"type":"error","name":"ServiceManager__InvalidOperator"},{"inputs":[],"type":"error","name":"ServiceManager__InvalidStrategy"},{"inputs":[],"type":"error","name":"ServiceManager__Unauthorized"},{"inputs":[{"internalType":"address","name":"avsDirectory","type":"address","indexed":true}],"type":"event","name":"AVSDirectoryUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"aggregator","type":"address","indexed":true}],"type":"event","name":"AggregatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegationManager","type":"address","indexed":true}],"type":"event","name":"DelegationManagerUpdated","anonymous":false},{"inputs":[{"internalType":"string","name":"policyID","type":"string","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":false}],"type":"event","name":"DeployedPolicy","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskID","type":"uint256","indexed":true}],"type":"event","name":"NonCompliantTask","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policyID","type":"string","indexed":true}],"type":"event","name":"RemovedPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policyID","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"string","name":"socialGraphID","type":"string","indexed":true},{"internalType":"string","name":"socialGraphConfig","type":"string","indexed":false}],"type":"event","name":"SocialGraphDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"stakeRegistry","type":"address","indexed":true}],"type":"event","name":"StakeRegistryUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"msgSender","type":"address","indexed":true},{"internalType":"address","name":"target","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":true},{"internalType":"string","name":"policyID","type":"string","indexed":false},{"internalType":"string","name":"taskId","type":"string","indexed":false},{"internalType":"uint32","name":"quorumThresholdCount","type":"uint32","indexed":false},{"internalType":"uint256","name":"expireByBlockNumber","type":"uint256","indexed":false},{"internalType":"address[]","name":"signerAddresses","type":"address[]","indexed":false}],"type":"event","name":"TaskValidated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"thresholdStake","type":"uint256","indexed":true}],"type":"event","name":"ThresholdStakeUpdated","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"addPermissionedOperators"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addStrategy"},{"inputs":[],"stateMutability":"view","type":"function","name":"aggregator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"avsDirectory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"clientToPolicy","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"},{"internalType":"string","name":"_policy","type":"string"},{"internalType":"uint256","name":"_quorumThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deployPolicy"},{"inputs":[{"internalType":"string","name":"_socialGraphID","type":"string"},{"internalType":"string","name":"_socialGraphConfig","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deploySocialGraph"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"deployedPolicyIDs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"getDeployedPolicies","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRestakedStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRestakeableStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSocialGraphIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"struct Task","name":"_task","type":"tuple","components":[{"internalType":"string","name":"taskId","type":"string"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"encodedSigAndArgs","type":"bytes"},{"internalType":"string","name":"policyID","type":"string"},{"internalType":"uint32","name":"quorumThresholdCount","type":"uint32"},{"internalType":"uint256","name":"expireByBlockNumber","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"hashTaskWithExpiry","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"idToPolicy","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"idToSocialGraph","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_aggregator","type":"address"},{"internalType":"address","name":"_delegationManager","type":"address"},{"internalType":"address","name":"_stakeRegistry","type":"address"},{"internalType":"address","name":"_avsDirectory","type":"address"},{"internalType":"uint256","name":"_thresholdStake","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operators","outputs":[{"internalType":"uint256","name":"totalStake","type":"uint256"},{"internalType":"enum ServiceManager.OperatorStatus","name":"status","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_operatorSigningKey","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"_operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[{"internalType":"address[]","name":"_operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"removePermissionedOperators"},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removePolicy"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_oldSigningKey","type":"address"},{"internalType":"address","name":"_newSigningKey","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rotatePredicateSigningKey"},{"inputs":[{"internalType":"address","name":"_avsDirectory","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAVSDirectory"},{"inputs":[{"internalType":"address","name":"_aggregator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAggregator"},{"inputs":[{"internalType":"address","name":"_delegationManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationManager"},{"inputs":[{"internalType":"string","name":"_metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setMetadataURI"},{"inputs":[{"internalType":"string","name":"_policyID","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setPolicy"},{"inputs":[{"internalType":"address","name":"_stakeRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakeRegistry"},{"inputs":[{"internalType":"uint256","name":"_thresholdStake","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setThresholdStake"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"signingKeyToOperator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"socialGraphIDs","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"spentTaskIds","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stakeRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategies","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"thresholdStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorsForQuorum"},{"inputs":[{"internalType":"struct Task","name":"_task","type":"tuple","components":[{"internalType":"string","name":"taskId","type":"string"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"encodedSigAndArgs","type":"bytes"},{"internalType":"string","name":"policyID","type":"string"},{"internalType":"uint32","name":"quorumThresholdCount","type":"uint32"},{"internalType":"uint256","name":"expireByBlockNumber","type":"uint256"}]},{"internalType":"address[]","name":"signerAddresses","type":"address[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"validateSignatures","outputs":[{"internalType":"bool","name":"isVerified","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"addPermissionedOperators(address[])":{"details":"only callable by the owner","params":{"_operators":"is the address[] to be permissioned for registration on the AVS"}},"addStrategy(address,uint8,uint256)":{"params":{"_strategy":"address of the strategy to add","index":"uint256 denoting the index for the strategy","quorumNumber":"uint8 denoting the quorum number"}},"deployPolicy(string,string,uint256)":{"params":{"_policy":"is set of formatted rules","_policyID":"is a unique identifier"}},"deploySocialGraph(string,string)":{"params":{"_socialGraphConfig":"is the config for the social graph","_socialGraphID":"is a unique identifier"}},"deregisterOperatorFromAVS(address)":{"params":{"_operator":"the address of the operator to be removed"}},"getDeployedPolicies()":{"returns":{"_0":"array of deployed policies"}},"getOperatorRestakedStrategies(address)":{"details":"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately","params":{"operator":"The address of the operator to get restaked strategies for"}},"getRestakeableStrategies()":{"details":"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately"},"getSocialGraphIDs()":{"returns":{"_0":"array of social graph IDs"}},"hashTaskWithExpiry((string,address,address,uint256,bytes,string,uint32,uint256))":{"params":{"_task":"parameters of the task"},"returns":{"_0":"the keccak256 digest of the task"}},"owner()":{"details":"Returns the address of the current owner."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"_operatorSignature":"signature used for validation","_operatorSigningKey":"address of the operator signing key"}},"removePermissionedOperators(address[])":{"details":"only callable by the owner","params":{"_operators":"is the address[] to have permission revoked for registration on the AVS"}},"removePolicy(string)":{"params":{"_policyID":"address of the Pod"}},"removeStrategy(address)":{"params":{"_strategy":"address of the strategy to be removed"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"rotatePredicateSigningKey(address,address)":{"params":{"_newSigningKey":"address of the new signing key to add","_oldSigningKey":"address of the old signing key to remove"}},"setAVSDirectory(address)":{"details":"only callable by the owner","params":{"_avsDirectory":"is the avsDirectory on the eigenlayer contracts"}},"setAggregator(address)":{"details":"only callable by the owner","params":{"_aggregator":"is the aggregator that can execute the callback"}},"setDelegationManager(address)":{"details":"only callable by the owner","params":{"_delegationManager":"is the delegationManager on the eigenlayer contracts"}},"setMetadataURI(string)":{"details":"only callable by the owner","params":{"_metadataURI":"is the metadata URI for the AVS"}},"setPolicy(string)":{"params":{"_policyID":"address of the Pod"}},"setStakeRegistry(address)":{"details":"only callable by the owner","params":{"_stakeRegistry":"is the stakeRegistry on the eigenlayer contracts"}},"setThresholdStake(uint256)":{"details":"Has modifiers: onlyOwner.","params":{"_thresholdStake":"The threshold stake (uint256)."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateOperatorsForQuorum(address[][],bytes)":{"details":"This method is used to update the stakes of all operators in a quorum at once, rather than individually. Performs sanitization checks on the input array lengths, quorumNumbers existing, and that quorumNumbers are ordered. Function must also not be paused by the PAUSED_UPDATE_OPERATOR flag.","params":{"operatorsPerQuorum":"is an array of arrays of operators to update for each quorum. Note that each nested array of operators must be sorted in ascending address order to ensure that all operators in the quorum are updated","quorumNumbers":"is an array of quorum numbers to update"}},"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])":{"params":{"_task":"the params of the task","signatures":"the signatures of the operators","signerAddresses":"the addresses of the operators"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermissionedOperators(address[])":{"notice":"Adds permissioned operators to the set for the AVS"},"addStrategy(address,uint8,uint256)":{"notice":"Adds a new strategy"},"deployPolicy(string,string,uint256)":{"notice":"Deploys a policy for which clients can use"},"deploySocialGraph(string,string)":{"notice":"Deploys a social graph which clients can use in policy"},"deregisterOperatorFromAVS(address)":{"notice":"Removes an operator"},"getDeployedPolicies()":{"notice":"Gets array of deployed policies"},"getOperatorRestakedStrategies(address)":{"notice":"Returns the list of strategies that the operator has potentially restaked on the AVS"},"getRestakeableStrategies()":{"notice":"Returns the list of strategies that the AVS supports for restaking"},"getSocialGraphIDs()":{"notice":"Gets array of social graph IDs"},"hashTaskWithExpiry((string,address,address,uint256,bytes,string,uint32,uint256))":{"notice":"Performs the hashing of an STM task"},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Registers a new operator"},"removePermissionedOperators(address[])":{"notice":"Removes permissioned operators from the set for the AVS"},"removePolicy(string)":{"notice":"Removes a policy for a client"},"removeStrategy(address)":{"notice":"Removes a strategy"},"rotatePredicateSigningKey(address,address)":{"notice":"Enables the rotation of Predicate Signing Key for an operator"},"setAVSDirectory(address)":{"notice":"Sets the avsDirectory contract address"},"setAggregator(address)":{"notice":"Sets the aggregator address on contracts"},"setDelegationManager(address)":{"notice":"Sets the delegationManager contract address"},"setMetadataURI(string)":{"notice":"Sets the metadata URI for the AVS"},"setPolicy(string)":{"notice":"Sets a policy for a client"},"setStakeRegistry(address)":{"notice":"Sets the stakeRegistry contract address"},"setThresholdStake(uint256)":{"notice":"Sets threshold stake."},"updateOperatorsForQuorum(address[][],bytes)":{"notice":"Updates the stakes of all operators for each of the specified quorums in the StakeRegistry. Each quorum also has their quorumUpdateBlockNumber updated. which is meant to keep track of when operators were last all updated at once."},"validateSignatures((string,address,address,uint256,bytes,string,uint32,uint256),address[],bytes[])":{"notice":"Validates signatures using the OpenZeppelin ECDSA library for the Predicate Single Transaction Model"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ServiceManager.sol":"ServiceManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"}},"version":1},"id":71} \ No newline at end of file diff --git a/out/ServiceManager.t.sol/ServiceManagerTest.json b/out/ServiceManager.t.sol/ServiceManagerTest.json new file mode 100644 index 00000000..557e71fd --- /dev/null +++ b/out/ServiceManager.t.sol/ServiceManagerTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cannotSupplySignaturesToTaskWithDifferentDigest","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"testCanDeployPolicy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCanDeploySocialGraph","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCanNotAddInvalidStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCanNotUpdateForQuorumInvalidOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCanNotUpdateQuorumWithInvalidArray","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCannotReplaySignatures","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCannotUseSpentTask","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNoDuplicatePolicyDeploy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNoDuplicateSocialGraphDeploy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testNonPermissionedOperatorCannotRegister","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOperatorCanChangeAlias","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOperatorCanNotChangeOtherAlias","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOperatorCanRegisterOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOperatorCannotRegisterWithOtherOperatorAlias","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerCanAddStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerCanRemoveOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnerCanRemoveStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPermissionedOperatorCanRegister","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAddrCanNotAddStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAddrCanNotChangeAlias","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAddrCanNotRemoveStrategy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRandomAddrCannotRemoveOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSignaturesCannotBeRearranged","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSignaturesGreaterThanQuorumThresholdCannotBeRearranged","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUpdateOperatorsForQuorumZeroStake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b6201d0dd80620006526000396000f3fe608060405260043610620002335760003560e01c806374dbdd72116200012f578063ba414fa611620000b3578063da709cdf1162000075578063da709cdf1462000584578063e20c9f71146200059c578063e73c905814620005b4578063f0b1e95d14620005cc578063fa7626d414620005e457005b8063ba414fa614620004fb578063c469d8061462000524578063c584ea29146200053c578063d27eb3581462000554578063d80dd929146200056c57005b8063916a17c611620000fd578063916a17c614620004835780639483f3a6146200049b578063ac34a9ff14620004b3578063ae05faf014620004cb578063b5508aa914620004e357005b806374dbdd72146200041457806378007681146200042c5780637cd1e621146200044457806385226c81146200045c57005b80632db0035811620001b75780635ee285d111620001855780635ee285d1146200038d5780635f161c3414620003a557806360e6bb8314620003bd57806362b4f17b14620003d557806366d9a9a014620003ed57005b80632db00358146200032d5780633932f89014620003455780633e5e3c23146200035d5780633f7286f4146200037557005b80631cb11ea611620002015780631cb11ea6146200029d5780631ed7831c14620002b557806320843b4e14620002e557806320a4495514620002fd5780632ba8f2f6146200031557005b8063051cebb1146200023d5780630a9254e414620002555780631aa8b734146200026d5780631c7a8d63146200028557005b366200023b57005b005b3480156200024a57600080fd5b506200023b62000600565b3480156200026257600080fd5b506200023b62000737565b3480156200027a57600080fd5b506200023b62000fd0565b3480156200029257600080fd5b506200023b62001e40565b348015620002aa57600080fd5b506200023b62002cc7565b348015620002c257600080fd5b50620002cd62003ad6565b604051620002dc919062010a68565b60405180910390f35b348015620002f257600080fd5b506200023b62003b3a565b3480156200030a57600080fd5b506200023b62003c51565b3480156200032257600080fd5b506200023b62004f6e565b3480156200033a57600080fd5b506200023b62005218565b3480156200035257600080fd5b506200023b62006301565b3480156200036a57600080fd5b50620002cd62006504565b3480156200038257600080fd5b50620002cd62006566565b3480156200039a57600080fd5b506200023b620065c8565b348015620003b257600080fd5b506200023b62006775565b348015620003ca57600080fd5b506200023b62007759565b348015620003e257600080fd5b506200023b620085e7565b348015620003fa57600080fd5b5062000405620086e2565b604051620002dc919062010a84565b3480156200042157600080fd5b506200023b620087d5565b3480156200043957600080fd5b506200023b620088e6565b3480156200045157600080fd5b506200023b620098c8565b3480156200046957600080fd5b50620004746200a7c2565b604051620002dc919062010b98565b3480156200049057600080fd5b50620004056200a89c565b348015620004a857600080fd5b506200023b6200a986565b348015620004c057600080fd5b506200023b6200b354565b348015620004d857600080fd5b506200023b6200c0e0565b348015620004f057600080fd5b50620004746200ce73565b3480156200050857600080fd5b50620005136200cf4d565b6040519015158152602001620002dc565b3480156200053157600080fd5b506200023b6200d078565b3480156200054957600080fd5b506200023b6200d147565b3480156200056157600080fd5b506200023b6200d4a3565b3480156200057957600080fd5b506200023b6200d547565b3480156200059157600080fd5b506200023b6200e22f565b348015620005a957600080fd5b50620002cd6200ee0a565b348015620005c157600080fd5b506200023b6200ee6c565b348015620005d957600080fd5b506200023b620101cd565b348015620005f157600080fd5b50600054620005139060ff1681565b601f5460405163c0443c5f60e01b81526001600160a01b039091169063c0443c5f90620006339060019060040162010bfe565b600060405180830381600087803b1580156200064e57600080fd5b505af115801562000663573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006b557600080fd5b505af1158015620006ca573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f9150620007019060019060040162010bfe565b600060405180830381600087803b1580156200071c57600080fd5b505af115801562000731573d6000803e3d6000fd5b50505050565b6032546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200078c57600080fd5b505af1158015620007a1573d6000803e3d6000fd5b50505050604051620007b3906201090d565b604051809103906000f080158015620007d0573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055604051620007ff906201091a565b604051809103906000f0801580156200081c573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b039283161790556032546040519116906200084d9062010928565b6001600160a01b039091168152602001604051809103906000f0801580156200087a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620008b99062010936565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620008f6573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b54604051919216906200092b9062010944565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200095f573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b8152919263eb990c5992620009ae9230921690600090819060040162010c5e565b600060405180830381600087803b158015620009c957600080fd5b505af1158015620009de573d6000803e3d6000fd5b50505050604051620009f09062010952565b604051809103906000f08015801562000a0d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560325460405191169062000a3e9062010928565b6001600160a01b039091168152602001604051809103906000f08015801562000a6b573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405162000a9a9062010960565b604051809103906000f08015801562000ab7573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e546040519192169062000aec9062010944565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000b20573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b15801562000ba957600080fd5b505af115801562000bbe573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000c1057600080fd5b505af115801562000c25573d6000803e3d6000fd5b50506040516303223eab60e11b81523060048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562000c7157600080fd5b505af115801562000c86573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f915062000cbd9060019060040162010c87565b600060405180830381600087803b15801562000cd857600080fd5b505af115801562000ced573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d3f57600080fd5b505af115801562000d54573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d7591506201096e565b6001600160a01b039091168152602001604051809103906000f08015801562000da2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000de39060040162010de7565b600060405180830381600087803b15801562000dfe57600080fd5b505af115801562000e13573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000e6690620102de565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000ebb90620102de565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000f0b90620102de565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000f6190620102de565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000fae90620103f3565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200101857600080fd5b505af11580156200102d573d6000803e3d6000fd5b5060009250600291506200103e9050565b60405190808252806020026020018201604052801562001068578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200108f576200108f62010e2e565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620010c357620010c362010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200110290849060040162010a68565b600060405180830381600087803b1580156200111d57600080fd5b505af115801562001132573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200118457600080fd5b505af115801562001199573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b158015620011f557600080fd5b505af11580156200120a573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362001288939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620012a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012cc919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200132d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001353919062010e5e565b9250925092506000828285604051602001620013729392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620013c79183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200140f90899060040162010ec0565b600060405180830381600087803b1580156200142a57600080fd5b505af11580156200143f573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562001492573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b8919062010f19565b915050620014dc816002811115620014d457620014d462010f4f565b600062010407565b87156200155157601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200151c9291169060279060040162010fa2565b600060405180830381600087803b1580156200153757600080fd5b505af11580156200154c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200159f57600080fd5b505af1158015620015b4573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200160d57600080fd5b505af115801562001622573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c8893620016a0939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620016be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016e4919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162001726918590600401918252602082015260400190565b606060405180830381865afa15801562001744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176a919062010e5e565b60405192995090975095506200178990879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620017de9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200182690859060040162010ec0565b600060405180830381600087803b1580156200184157600080fd5b505af115801562001856573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa158015620018a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018cc919062010f19565b9350620018e99050836002811115620014d457620014d462010f4f565b8915620019cd5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200194557600080fd5b505af11580156200195a573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062001998929091169060279060040162010fa2565b600060405180830381600087803b158015620019b357600080fd5b505af1158015620019c8573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001a1b57600080fd5b505af115801562001a30573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562001a8957600080fd5b505af115801562001a9e573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562001af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b17919062010f19565b91505062001b33816002811115620014d457620014d462010f4f565b601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262001b6c9291169060279060040162010fa2565b600060405180830381600087803b15801562001b8757600080fd5b505af115801562001b9c573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562001bec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c12919062010f19565b915062001c37905081600281111562001c2f5762001c2f62010f4f565b600162010407565b601f54603854604051630ff26fd160e01b81526001600160a01b0391821660048201526000929190911690630ff26fd190602401602060405180830381865afa15801562001c89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001caf91906201107e565b60375490915062001ccb9082906001600160a01b0316620104ed565b601f54603854603b54604051621ba1eb60e01b81526001600160a01b0392831660048201529082166024820152911690621ba1eb90604401600060405180830381600087803b15801562001d1e57600080fd5b505af115801562001d33573d6000803e3d6000fd5b5050601f54603b54604051630ff26fd160e01b81526001600160a01b0391821660048201526000945091169150630ff26fd190602401602060405180830381865afa15801562001d87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dad91906201107e565b60375490915062001dc99082906001600160a01b0316620104ed565b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001e1757600080fd5b505af115801562001e2c573d6000803e3d6000fd5b505050505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b15801562001e8857600080fd5b505af115801562001e9d573d6000803e3d6000fd5b50600092506002915062001eae9050565b60405190808252806020026020018201604052801562001ed8578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062001eff5762001eff62010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062001f335762001f3362010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062001f7290849060040162010a68565b600060405180830381600087803b15801562001f8d57600080fd5b505af115801562001fa2573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001ff457600080fd5b505af115801562002009573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200206557600080fd5b505af11580156200207a573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c8893620020f8939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562002116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200213c919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200219d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021c3919062010e5e565b9250925092506000828285604051602001620021e29392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620022379183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200227f90899060040162010ec0565b600060405180830381600087803b1580156200229a57600080fd5b505af1158015620022af573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562002302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002328919062010f19565b91505062002344816002811115620014d457620014d462010f4f565b8715620023b957601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d92620023849291169060279060040162010fa2565b600060405180830381600087803b1580156200239f57600080fd5b505af1158015620023b4573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200240757600080fd5b505af11580156200241c573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200247557600080fd5b505af11580156200248a573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362002508939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562002526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254c919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200258e918590600401918252602082015260400190565b606060405180830381865afa158015620025ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025d2919062010e5e565b6040519299509097509550620025f190879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620026469183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200268e90859060040162010ec0565b600060405180830381600087803b158015620026a957600080fd5b505af1158015620026be573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200270e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002734919062010f19565b9350620027519050836002811115620014d457620014d462010f4f565b8915620028355760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620027ad57600080fd5b505af1158015620027c2573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062002800929091169060279060040162010fa2565b600060405180830381600087803b1580156200281b57600080fd5b505af115801562002830573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200288357600080fd5b505af115801562002898573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b158015620028f157600080fd5b505af115801562002906573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062002944929091169060279060040162010fa2565b600060405180830381600087803b1580156200295f57600080fd5b505af115801562002974573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa158015620029c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029ed919062010f19565b91505062002a0981600281111562001c2f5762001c2f62010f4f565b60395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b15801562002a5e57600080fd5b505af115801562002a73573d6000803e3d6000fd5b5050601f54603a54604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062002ab19290911690602a9060040162010fa2565b600060405180830381600087803b15801562002acc57600080fd5b505af115801562002ae1573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562002b34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b5a919062010f19565b91505062002b7681600281111562001c2f5762001c2f62010f4f565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002bc457600080fd5b505af115801562002bd9573d6000803e3d6000fd5b505060395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa791506024015b600060405180830381600087803b15801562002c3357600080fd5b505af115801562002c48573d6000803e3d6000fd5b5050601f54603854603b54604051621ba1eb60e01b81526001600160a01b039283166004820152908216602482015291169250621ba1eb9150604401600060405180830381600087803b15801562002c9f57600080fd5b505af115801562002cb4573d6000803e3d6000fd5b5050505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b15801562002d0f57600080fd5b505af115801562002d24573d6000803e3d6000fd5b50600092506002915062002d359050565b60405190808252806020026020018201604052801562002d5f578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062002d865762002d8662010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062002dba5762002dba62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062002df990849060040162010a68565b600060405180830381600087803b15801562002e1457600080fd5b505af115801562002e29573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002e7b57600080fd5b505af115801562002e90573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562002eec57600080fd5b505af115801562002f01573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362002f7f939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562002f9d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fc3919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562003024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200304a919062010e5e565b9250925092506000828285604051602001620030699392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620030be9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200310690899060040162010ec0565b600060405180830381600087803b1580156200312157600080fd5b505af115801562003136573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562003189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031af919062010f19565b915050620031cb816002811115620014d457620014d462010f4f565b87156200324057601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200320b9291169060279060040162010fa2565b600060405180830381600087803b1580156200322657600080fd5b505af11580156200323b573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200328e57600080fd5b505af1158015620032a3573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b158015620032fc57600080fd5b505af115801562003311573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200338f939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620033ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033d3919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162003415918590600401918252602082015260400190565b606060405180830381865afa15801562003433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003459919062010e5e565b60405192995090975095506200347890879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620034cd9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200351590859060040162010ec0565b600060405180830381600087803b1580156200353057600080fd5b505af115801562003545573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562003595573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035bb919062010f19565b9350620035d89050836002811115620014d457620014d462010f4f565b8915620036bc5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200363457600080fd5b505af115801562003649573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062003687929091169060279060040162010fa2565b600060405180830381600087803b158015620036a257600080fd5b505af1158015620036b7573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200370a57600080fd5b505af11580156200371f573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562003772573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003798919062010f19565b915050620037b4816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200380957600080fd5b505af11580156200381e573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200385c929091169060279060040162010fa2565b600060405180830381600087803b1580156200387757600080fd5b505af11580156200388c573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa158015620038dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003902919062010f19565b91506200391f905081600281111562001c2f5762001c2f62010f4f565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b1580156200397d57600080fd5b505af115801562003992573d6000803e3d6000fd5b50506037546040516001600160a01b0390911692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a2601f546037546040516351b27a6d60e11b81526001600160a01b03918216600482015291169063a364f4da90602401600060405180830381600087803b15801562003a1857600080fd5b505af115801562003a2d573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562003a7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003aa3919062010f19565b915062003ac8905081600281111562003ac05762003ac062010f4f565b600262010407565b505050505050505050505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562003b3057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162003b11575b5050505050905090565b601f5460405163c0443c5f60e01b81526001600160a01b039091169063c0443c5f9062003b6d9060019060040162010bfe565b600060405180830381600087803b15801562003b8857600080fd5b505af115801562003b9d573d6000803e3d6000fd5b5050601f5460405163d9d4e99f60e01b8152600093506001600160a01b03909116915063d9d4e99f9062003bd490600401620110a9565b600060405180830381865afa15801562003bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c1c9190810190620110d5565b905062003c4e816040518060400160405280600c81526020016b73616d706c65506f6c69637960a01b815250620105d6565b50565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b15801562003c9957600080fd5b505af115801562003cae573d6000803e3d6000fd5b50600092506002915062003cbf9050565b60405190808252806020026020018201604052801562003ce9578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062003d105762003d1062010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062003d445762003d4462010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062003d8390849060040162010a68565b600060405180830381600087803b15801562003d9e57600080fd5b505af115801562003db3573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003e0557600080fd5b505af115801562003e1a573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562003e7657600080fd5b505af115801562003e8b573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362003f09939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562003f27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f4d919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562003fae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fd4919062010e5e565b925092509250600082828560405160200162003ff39392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620040489183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200409090899060040162010ec0565b600060405180830381600087803b158015620040ab57600080fd5b505af1158015620040c0573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562004113573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004139919062010f19565b91505062004155816002811115620014d457620014d462010f4f565b8715620041ca57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d92620041959291169060279060040162010fa2565b600060405180830381600087803b158015620041b057600080fd5b505af1158015620041c5573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200421857600080fd5b505af11580156200422d573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200428657600080fd5b505af11580156200429b573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362004319939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562004337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200435d919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200439f918590600401918252602082015260400190565b606060405180830381865afa158015620043bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043e3919062010e5e565b60405192995090975095506200440290879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620044579183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200449f90859060040162010ec0565b600060405180830381600087803b158015620044ba57600080fd5b505af1158015620044cf573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200451f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004545919062010f19565b9350620045629050836002811115620014d457620014d462010f4f565b8915620046465760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620045be57600080fd5b505af1158015620045d3573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062004611929091169060279060040162010fa2565b600060405180830381600087803b1580156200462c57600080fd5b505af115801562004641573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200469457600080fd5b505af1158015620046a9573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff1681526020014360646200475d91906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc90620047979085906004016201126d565b602060405180830381865afa158015620047b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047db919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200483357600080fd5b505af115801562004848573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062004886929091169060279060040162010fa2565b600060405180830381600087803b158015620048a157600080fd5b505af1158015620048b6573d6000803e3d6000fd5b505060395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200490f57600080fd5b505af115801562004924573d6000803e3d6000fd5b5050601f54603a54604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d9350620049629290911690602a9060040162010fa2565b600060405180830381600087803b1580156200497d57600080fd5b505af115801562004992573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa491620049dc918890600401918252602082015260400190565b606060405180830381865afa158015620049fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a20919062010e5e565b925092509250600082828560405160200162004a3f9392919062010e9d565b60408051808303601f19018152908290526041546338d07aa960e21b835260048301526024820187905291506000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562004aa3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ac9919062010e5e565b604051929650909450925060009062004aeb9085908590889060200162010e9d565b60408051601f198184030181526002808452606084018352909350600092916020830190803683375050604080516002808252606082019092529293506000929150602082015b606081526020019060019003908162004b32575050603a546038549192506001600160a01b039081169116101562004c275760385482516001600160a01b0390911690839060009062004b895762004b8962010e2e565b6001600160a01b039283166020918202929092010152603a5483519116908390600190811062004bbd5762004bbd62010e2e565b60200260200101906001600160a01b031690816001600160a01b031681525050838160008151811062004bf45762004bf462010e2e565b6020026020010181905250828160018151811062004c165762004c1662010e2e565b602002602001018190525062004ce5565b603a5482516001600160a01b0390911690839060009062004c4c5762004c4c62010e2e565b6001600160a01b03928316602091820292909201015260385483519116908390600190811062004c805762004c8062010e2e565b60200260200101906001600160a01b031690816001600160a01b031681525050828160008151811062004cb75762004cb762010e2e565b6020026020010181905250838160018151811062004cd95762004cd962010e2e565b60200260200101819052505b601f546040516318cea58d60e01b81526001600160a01b03909116906318cea58d9062004d1b908c908690869060040162011282565b6020604051808303816000875af115801562004d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d61919062011311565b5060008160008151811062004d7a5762004d7a62010e2e565b602002602001015190508160018151811062004d9a5762004d9a62010e2e565b60200260200101518260008151811062004db85762004db862010e2e565b6020026020010181905250808260018151811062004dda5762004dda62010e2e565b602002602001018190525060008360018151811062004dfd5762004dfd62010e2e565b60200260200101518460008151811062004e1b5762004e1b62010e2e565b60200260200101906001600160a01b031690816001600160a01b031681525050808460018151811062004e525762004e5262010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004ec057600080fd5b505af115801562004ed5573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d915062004f0f908e908890889060040162011282565b6020604051808303816000875af115801562004f2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f55919062011311565b5050505050505050505050505050505050505050505050565b601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e739262004fa992911690600090819060040162011335565b600060405180830381600087803b15801562004fc457600080fd5b505af115801562004fd9573d6000803e3d6000fd5b5050601f546031546040516366f17e7360e01b81526001600160a01b0392831694506366f17e7393506200501a929091169060009060019060040162011335565b600060405180830381600087803b1580156200503557600080fd5b505af11580156200504a573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b815260016004820152600093506001600160a01b03909116915063d574ea3d90602401602060405180830381865afa1580156200509b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050c191906201107e565b603154909150620050dd9082906001600160a01b0316620104ed565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200512b57600080fd5b505af115801562005140573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200519957600080fd5b505af1158015620051ae573d6000803e3d6000fd5b5050601f546031546040516302ea311d60e31b81526001600160a01b0391821660048201529116925063175188e89150602401600060405180830381600087803b158015620051fc57600080fd5b505af115801562005211573d6000803e3d6000fd5b5050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200526057600080fd5b505af115801562005275573d6000803e3d6000fd5b506000925060029150620052869050565b604051908082528060200260200182016040528015620052b0578160200160208202803683370190505b5060375481519192506001600160a01b0316908290600090620052d757620052d762010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200530b576200530b62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200534a90849060040162010a68565b600060405180830381600087803b1580156200536557600080fd5b505af11580156200537a573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620053cc57600080fd5b505af1158015620053e1573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200543d57600080fd5b505af115801562005452573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c8893620054d0939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620054ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005514919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562005575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200559b919062010e5e565b9250925092506000828285604051602001620055ba9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200560f9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200565790899060040162010ec0565b600060405180830381600087803b1580156200567257600080fd5b505af115801562005687573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa158015620056da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005700919062010f19565b9150506200571c816002811115620014d457620014d462010f4f565b87156200579157601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200575c9291169060279060040162010fa2565b600060405180830381600087803b1580156200577757600080fd5b505af11580156200578c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620057df57600080fd5b505af1158015620057f4573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200584d57600080fd5b505af115801562005862573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c8893620058e0939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620058fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005924919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162005966918590600401918252602082015260400190565b606060405180830381865afa15801562005984573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059aa919062010e5e565b6040519299509097509550620059c990879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a9162005a1e9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062005a6690859060040162010ec0565b600060405180830381600087803b15801562005a8157600080fd5b505af115801562005a96573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562005ae6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b0c919062010f19565b935062005b299050836002811115620014d457620014d462010f4f565b891562005c0d5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b15801562005b8557600080fd5b505af115801562005b9a573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062005bd8929091169060279060040162010fa2565b600060405180830381600087803b15801562005bf357600080fd5b505af115801562005c08573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005c5b57600080fd5b505af115801562005c70573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff16815260200143606462005d2491906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc9062005d5e9085906004016201126d565b602060405180830381865afa15801562005d7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005da2919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b15801562005dfd57600080fd5b505af115801562005e12573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062005e50929091169060279060040162010fa2565b600060405180830381600087803b15801562005e6b57600080fd5b505af115801562005e80573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa49162005eca918990600401918252602082015260400190565b606060405180830381865afa15801562005ee8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f0e919062010e5e565b92509250925081818460405160200162005f2b9392919062010e9d565b60408051601f19818403018152600180845283830190925295506000919060208083019080368337505060385482519293506001600160a01b03169183915060009062005f7c5762005f7c62010e2e565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b606081526020019060019003908162005fac579050509050858160008151811062005fdb5762005fdb62010e2e565b6020908102919091010152601f546040516318cea58d60e01b81526000916001600160a01b0316906318cea58d906200601d908c908790879060040162011282565b6020604051808303816000875af11580156200603d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006063919062011311565b90506200608a816040518060600160405280602681526020016201cffc60269139620106da565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620060d857600080fd5b505af1158015620060ed573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d915062006127908c908790879060040162011282565b6020604051808303816000875af115801562006147573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200616d919062011311565b50604080516101408101825260096101008201908152681b995dd5185cdad25960ba1b6101208301528152306020808301829052828401919091526000606083018190528351808301855281815260808401528351808501909452600a84526974657374506f6c69637960b01b9184019190915260a0820192909252600160c082015260e08101620062014360646201118e565b81525090506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200625457600080fd5b505af115801562006269573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d9150620062a39084908890889060040162011282565b6020604051808303816000875af1158015620062c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062e9919062011311565b50505050505050505050505050505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816200631857505060408051600180825281830190925291925060009190602080830190803683375050602f5482519293506001600160a01b03169183915060009062006376576200637662010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250508082600081518110620063ad57620063ad62010e2e565b6020908102919091010152604080516001808252818301909252600091602082018180368337019050506040805160016020820181905292935001604051602081830303815290604052620064029062011359565b8260008151811062006418576200641862010e2e565b60200101906001600160f81b031916908160001a9053506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200647d57600080fd5b505af115801562006492573d6000803e3d6000fd5b5050601f54604051630a2814a960e31b81526001600160a01b039091169250635140a5489150620064ca908790869060040162011391565b600060405180830381600087803b158015620064e557600080fd5b505af1158015620064fa573d6000803e3d6000fd5b5050505050505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562003b30576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162003b11575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562003b30576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162003b11575050505050905090565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b1580156200662657600080fd5b505af11580156200663b573d6000803e3d6000fd5b50506030546040516001600160a01b0390911692507f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f19150600090a2601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e7392620066b292911690600090819060040162011335565b600060405180830381600087803b158015620066cd57600080fd5b505af1158015620066e2573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b815260006004820181905293506001600160a01b03909116915063d574ea3d90602401602060405180830381865afa15801562006733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200675991906201107e565b60305490915062003c4e9082906001600160a01b0316620104ed565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b158015620067bd57600080fd5b505af1158015620067d2573d6000803e3d6000fd5b506000925060029150620067e39050565b6040519080825280602002602001820160405280156200680d578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062006834576200683462010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062006868576200686862010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f890620068a790849060040162010a68565b600060405180830381600087803b158015620068c257600080fd5b505af1158015620068d7573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200692957600080fd5b505af11580156200693e573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200699a57600080fd5b505af1158015620069af573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362006a2d939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562006a4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a71919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562006ad2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006af8919062010e5e565b925092509250600082828560405160200162006b179392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162006b6c9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062006bb490899060040162010ec0565b600060405180830381600087803b15801562006bcf57600080fd5b505af115801562006be4573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562006c37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c5d919062010f19565b91505062006c79816002811115620014d457620014d462010f4f565b871562006cee57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262006cb99291169060279060040162010fa2565b600060405180830381600087803b15801562006cd457600080fd5b505af115801562006ce9573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562006d3c57600080fd5b505af115801562006d51573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562006daa57600080fd5b505af115801562006dbf573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362006e3d939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562006e5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e81919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162006ec3918590600401918252602082015260400190565b606060405180830381865afa15801562006ee1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f07919062010e5e565b604051929950909750955062006f2690879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a9162006f7b9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062006fc390859060040162010ec0565b600060405180830381600087803b15801562006fde57600080fd5b505af115801562006ff3573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562007043573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007069919062010f19565b9350620070869050836002811115620014d457620014d462010f4f565b89156200716a5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620070e257600080fd5b505af1158015620070f7573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062007135929091169060279060040162010fa2565b600060405180830381600087803b1580156200715057600080fd5b505af115801562007165573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620071b857600080fd5b505af1158015620071cd573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562007220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007246919062010f19565b91505062007262816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620072b757600080fd5b505af1158015620072cc573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200730a929091169060279060040162010fa2565b600060405180830381600087803b1580156200732557600080fd5b505af11580156200733a573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200738a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620073b0919062010f19565b9150620073cd905081600281111562001c2f5762001c2f62010f4f565b601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e73926200740892911690600090819060040162011335565b600060405180830381600087803b1580156200742357600080fd5b505af115801562007438573d6000803e3d6000fd5b506000925060019150620074499050565b6040519080825280602002602001820160405280156200747e57816020015b6060815260200190600190039081620074685790505b506040805160018082528183019092529192506000919060208083019080368337505060375482519293506001600160a01b031691839150600090620074c857620074c862010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250508082600081518110620074ff57620074ff62010e2e565b6020908102919091010152604080516001808252818301909252600091602082018180368337019050506040805160016020820181905292935001604051602081830303815290604052620075549062011359565b826000815181106200756a576200756a62010e2e565b60200101906001600160f81b031916908160001a90535060405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b158015620075df57600080fd5b505af1158015620075f4573d6000803e3d6000fd5b50505050816040516200760891906201143e565b6040518091039020846040516200762091906201145c565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a3601f54604051630a2814a960e31b81526001600160a01b0390911690635140a5489062007684908790869060040162011391565b600060405180830381600087803b1580156200769f57600080fd5b505af1158015620076b4573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562007704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200772a919062010f19565b955062007747905085600281111562001c2f5762001c2f62010f4f565b50505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b158015620077a157600080fd5b505af1158015620077b6573d6000803e3d6000fd5b506000925060029150620077c79050565b604051908082528060200260200182016040528015620077f1578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062007818576200781862010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200784c576200784c62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200788b90849060040162010a68565b600060405180830381600087803b158015620078a657600080fd5b505af1158015620078bb573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200790d57600080fd5b505af115801562007922573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200797e57600080fd5b505af115801562007993573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362007a11939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562007a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a55919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562007ab6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007adc919062010e5e565b925092509250600082828560405160200162007afb9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162007b509183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062007b9890899060040162010ec0565b600060405180830381600087803b15801562007bb357600080fd5b505af115801562007bc8573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562007c1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c41919062010f19565b91505062007c5d816002811115620014d457620014d462010f4f565b871562007cd257601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262007c9d9291169060279060040162010fa2565b600060405180830381600087803b15801562007cb857600080fd5b505af115801562007ccd573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007d2057600080fd5b505af115801562007d35573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562007d8e57600080fd5b505af115801562007da3573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362007e21939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562007e3f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e65919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162007ea7918590600401918252602082015260400190565b606060405180830381865afa15801562007ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007eeb919062010e5e565b604051929950909750955062007f0a90879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a9162007f5f9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062007fa790859060040162010ec0565b600060405180830381600087803b15801562007fc257600080fd5b505af115801562007fd7573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562008027573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200804d919062010f19565b93506200806a9050836002811115620014d457620014d462010f4f565b89156200814e5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620080c657600080fd5b505af1158015620080db573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062008119929091169060279060040162010fa2565b600060405180830381600087803b1580156200813457600080fd5b505af115801562008149573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200819c57600080fd5b505af1158015620081b1573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff1681526020014360646200826591906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc906200829f9085906004016201126d565b602060405180830381865afa158015620082bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620082e3919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200833e57600080fd5b505af115801562008353573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062008391929091169060279060040162010fa2565b600060405180830381600087803b158015620083ac57600080fd5b505af1158015620083c1573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa4916200840b918990600401918252602082015260400190565b606060405180830381865afa15801562008429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200844f919062010e5e565b9250925092508181846040516020016200846c9392919062010e9d565b60408051601f19818403018152600180845283830190925295506000919060208083019080368337505060385482519293506001600160a01b031691839150600090620084bd57620084bd62010e2e565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b6060815260200190600190039081620084ed57905050905085816000815181106200851c576200851c62010e2e565b6020908102919091010152601f546040516318cea58d60e01b81526000916001600160a01b0316906318cea58d906200855e908c908790879060040162011282565b6020604051808303816000875af11580156200857e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085a4919062011311565b90506200608a816040518060400160405280601e81526020017f466972737420657865637574696f6e2073686f756c6420737563636565640000815250620106da565b601f5460405163d20e78c960e01b81526001600160a01b039091169063d20e78c9906200861790600401620114c7565b600060405180830381600087803b1580156200863257600080fd5b505af115801562008647573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200869957600080fd5b505af1158015620086ae573d6000803e3d6000fd5b5050601f5460405163d20e78c960e01b81526001600160a01b03909116925063d20e78c991506200070190600401620114c7565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620087b357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620087745790505b5050505050815250508152602001906001019062008706565b50505050905090565b601f5460405163d20e78c960e01b81526001600160a01b039091169063d20e78c9906200880590600401620114c7565b600060405180830381600087803b1580156200882057600080fd5b505af115801562008835573d6000803e3d6000fd5b5050601f5460405163ddf6a51b60e01b8152600093506001600160a01b03909116915063ddf6a51b906200886c9060040162011517565b600060405180830381865afa1580156200888a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620088b49190810190620110d5565b905062003c4e816040518060400160405280600c81526020016b73616d706c65436f6e66696760a01b815250620105d6565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200892e57600080fd5b505af115801562008943573d6000803e3d6000fd5b506000925060029150620089549050565b6040519080825280602002602001820160405280156200897e578160200160208202803683370190505b5060375481519192506001600160a01b0316908290600090620089a557620089a562010e2e565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620089d957620089d962010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062008a1890849060040162010a68565b600060405180830381600087803b15801562008a3357600080fd5b505af115801562008a48573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562008a9a57600080fd5b505af115801562008aaf573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562008b0b57600080fd5b505af115801562008b20573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362008b9e939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562008bbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008be2919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562008c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008c69919062010e5e565b925092509250600082828560405160200162008c889392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162008cdd9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062008d2590899060040162010ec0565b600060405180830381600087803b15801562008d4057600080fd5b505af115801562008d55573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562008da8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008dce919062010f19565b91505062008dea816002811115620014d457620014d462010f4f565b871562008e5f57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262008e2a9291169060279060040162010fa2565b600060405180830381600087803b15801562008e4557600080fd5b505af115801562008e5a573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562008ead57600080fd5b505af115801562008ec2573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562008f1b57600080fd5b505af115801562008f30573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362008fae939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562008fcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ff2919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162009034918590600401918252602082015260400190565b606060405180830381865afa15801562009052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009078919062010e5e565b60405192995090975095506200909790879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620090ec9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200913490859060040162010ec0565b600060405180830381600087803b1580156200914f57600080fd5b505af115801562009164573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa158015620091b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620091da919062010f19565b9350620091f79050836002811115620014d457620014d462010f4f565b8915620092db5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200925357600080fd5b505af115801562009268573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d9350620092a6929091169060279060040162010fa2565b600060405180830381600087803b158015620092c157600080fd5b505af1158015620092d6573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200932957600080fd5b505af11580156200933e573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff168152602001436064620093f291906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc906200942c9085906004016201126d565b602060405180830381865afa1580156200944a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009470919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620094cb57600080fd5b505af1158015620094e0573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200951e929091169060279060040162010fa2565b600060405180830381600087803b1580156200953957600080fd5b505af11580156200954e573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa49162009598918990600401918252602082015260400190565b606060405180830381865afa158015620095b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620095dc919062010e5e565b925092509250818184604051602001620095f99392919062010e9d565b60408051601f19818403018152600180845283830190925295506000919060208083019080368337505060385482519293506001600160a01b0316918391506000906200964a576200964a62010e2e565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b60608152602001906001900390816200967a5790505090508581600081518110620096a957620096a962010e2e565b602090810291909101810191909152604080516101408101825260096101008201908152681b995dd5185cdad25960ba1b610120830152815230818401819052818301526000606082018190528251808501845281815260808301528251808401909352600a83526974657374506f6c69637960b01b9383019390935260a0810191909152600160c082015260e08101620097464360646201118e565b9052601f546040516325254a3f60e21b8152919250620097ce918a916001600160a01b03169063949528fc90620097829086906004016201126d565b602060405180830381865afa158015620097a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620097c6919062010e44565b14156201070e565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200981c57600080fd5b505af115801562009831573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d91506200986b9084908790879060040162011282565b6020604051808303816000875af11580156200988b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620098b1919062011311565b505050505050505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200991057600080fd5b505af115801562009925573d6000803e3d6000fd5b506000925060029150620099369050565b60405190808252806020026020018201604052801562009960578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062009987576200998762010e2e565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620099bb57620099bb62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f890620099fa90849060040162010a68565b600060405180830381600087803b15801562009a1557600080fd5b505af115801562009a2a573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562009a7c57600080fd5b505af115801562009a91573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562009aed57600080fd5b505af115801562009b02573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362009b80939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562009b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009bc4919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562009c25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009c4b919062010e5e565b925092509250600082828560405160200162009c6a9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162009cbf9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062009d0790899060040162010ec0565b600060405180830381600087803b15801562009d2257600080fd5b505af115801562009d37573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562009d8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009db0919062010f19565b91505062009dcc816002811115620014d457620014d462010f4f565b871562009e4157601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262009e0c9291169060279060040162010fa2565b600060405180830381600087803b15801562009e2757600080fd5b505af115801562009e3c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562009e8f57600080fd5b505af115801562009ea4573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562009efd57600080fd5b505af115801562009f12573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362009f90939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562009fae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009fd4919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200a016918590600401918252602082015260400190565b606060405180830381865afa1580156200a034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a05a919062010e5e565b60405192995090975095506200a07990879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200a0ce9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200a11690859060040162010ec0565b600060405180830381600087803b1580156200a13157600080fd5b505af11580156200a146573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200a196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a1bc919062010f19565b93506200a1d99050836002811115620014d457620014d462010f4f565b89156200a2bd5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200a23557600080fd5b505af11580156200a24a573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200a288929091169060279060040162010fa2565b600060405180830381600087803b1580156200a2a357600080fd5b505af11580156200a2b8573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200a30b57600080fd5b505af11580156200a320573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200a37957600080fd5b505af11580156200a38e573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200a3cc929091169060279060040162010fa2565b600060405180830381600087803b1580156200a3e757600080fd5b505af11580156200a3fc573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152600094508493509116906313e7c9d8906024016040805180830381865afa1580156200a451573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a477919062010f19565b915091506200a4b68160028111156200a494576200a49462010f4f565b60016040518060600160405280602181526020016201d0476021913962010775565b60395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200a50b57600080fd5b505af11580156200a520573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b60848201526000805160206201cf80833981519152925063f28dceb3915060a401600060405180830381600087803b1580156200a5ca57600080fd5b505af11580156200a5df573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200a61d9290911690602a9060040162010fa2565b600060405180830381600087803b1580156200a63857600080fd5b505af11580156200a64d573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200a69d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a6c3919062010f19565b90925090506200a7038160028111156200a6e1576200a6e162010f4f565b60006040518060600160405280602581526020016201d0226025913962010775565b601f54603854604051630ff26fd160e01b81526001600160a01b0391821660048201526000929190911690630ff26fd190602401602060405180830381865afa1580156200a755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a77b91906201107e565b6037546040805160608101909152603c8082529293506200a7b29284926001600160a01b031691906201cfa06020830139620107b6565b5050505050505050505050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5783829060005260206000200180546200a8089062010f65565b80601f01602080910402602001604051908101604052809291908181526020018280546200a8369062010f65565b80156200a8875780601f106200a85b576101008083540402835291602001916200a887565b820191906000526020600020905b8154815290600101906020018083116200a86957829003601f168201915b5050505050815260200190600101906200a7e6565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200a96d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200a92e5790505b505050505081525050815260200190600101906200a8c0565b6037546040516303223eab60e11b81526001600160a01b0390911660048201526000906000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200a9de57600080fd5b505af11580156200a9f3573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200aa71939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200aa8f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aab5919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200ab16573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ab3c919062010e5e565b92509250925060008282856040516020016200ab5b9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200abb09183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200abf890899060040162010ec0565b600060405180830381600087803b1580156200ac1357600080fd5b505af11580156200ac28573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200ac7b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aca1919062010f19565b9150506200acbd816002811115620014d457620014d462010f4f565b87156200ad3257601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200acfd9291169060279060040162010fa2565b600060405180830381600087803b1580156200ad1857600080fd5b505af11580156200ad2d573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200ad8057600080fd5b505af11580156200ad95573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200adee57600080fd5b505af11580156200ae03573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200ae81939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200ae9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aec5919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200af07918590600401918252602082015260400190565b606060405180830381865afa1580156200af25573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200af4b919062010e5e565b60405192995090975095506200af6a90879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200afbf9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200b00790859060040162010ec0565b600060405180830381600087803b1580156200b02257600080fd5b505af11580156200b037573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200b087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b0ad919062010f19565b93506200b0ca9050836002811115620014d457620014d462010f4f565b89156200b1ae5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200b12657600080fd5b505af11580156200b13b573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200b179929091169060279060040162010fa2565b600060405180830381600087803b1580156200b19457600080fd5b505af11580156200b1a9573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b1fc57600080fd5b505af11580156200b211573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b26357600080fd5b505af11580156200b278573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200b2d157600080fd5b505af11580156200b2e6573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200b324929091169060279060040162010fa2565b600060405180830381600087803b1580156200b33f57600080fd5b505af11580156200a7b2573d6000803e3d6000fd5b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200b39c57600080fd5b505af11580156200b3b1573d6000803e3d6000fd5b5060009250600291506200b3c29050565b6040519080825280602002602001820160405280156200b3ec578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200b413576200b41362010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200b447576200b44762010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200b48690849060040162010a68565b600060405180830381600087803b1580156200b4a157600080fd5b505af11580156200b4b6573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b50857600080fd5b505af11580156200b51d573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200b57957600080fd5b505af11580156200b58e573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200b60c939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200b62a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b650919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200b6b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b6d7919062010e5e565b92509250925060008282856040516020016200b6f69392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200b74b9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200b79390899060040162010ec0565b600060405180830381600087803b1580156200b7ae57600080fd5b505af11580156200b7c3573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200b816573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b83c919062010f19565b9150506200b858816002811115620014d457620014d462010f4f565b87156200b8cd57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200b8989291169060279060040162010fa2565b600060405180830381600087803b1580156200b8b357600080fd5b505af11580156200b8c8573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b91b57600080fd5b505af11580156200b930573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200b98957600080fd5b505af11580156200b99e573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200ba1c939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200ba3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ba60919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200baa2918590600401918252602082015260400190565b606060405180830381865afa1580156200bac0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bae6919062010e5e565b60405192995090975095506200bb0590879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200bb5a9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200bba290859060040162010ec0565b600060405180830381600087803b1580156200bbbd57600080fd5b505af11580156200bbd2573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200bc22573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bc48919062010f19565b93506200bc659050836002811115620014d457620014d462010f4f565b89156200bd495760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200bcc157600080fd5b505af11580156200bcd6573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200bd14929091169060279060040162010fa2565b600060405180830381600087803b1580156200bd2f57600080fd5b505af11580156200bd44573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200bd9757600080fd5b505af11580156200bdac573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200bdff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200be25919062010f19565b9150506200be41816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200be9657600080fd5b505af11580156200beab573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200bee9929091169060279060040162010fa2565b600060405180830381600087803b1580156200bf0457600080fd5b505af11580156200bf19573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200bf69573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bf8f919062010f19565b91506200bfac905081600281111562001c2f5762001c2f62010f4f565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200bffa57600080fd5b505af11580156200c00f573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200c06857600080fd5b505af11580156200c07d573d6000803e3d6000fd5b5050601f546037546040516351b27a6d60e11b81526001600160a01b0391821660048201529116925063a364f4da9150602401600060405180830381600087803b1580156200c0cb57600080fd5b505af115801562007747573d6000803e3d6000fd5b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200c12857600080fd5b505af11580156200c13d573d6000803e3d6000fd5b5060009250600291506200c14e9050565b6040519080825280602002602001820160405280156200c178578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200c19f576200c19f62010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200c1d3576200c1d362010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200c21290849060040162010a68565b600060405180830381600087803b1580156200c22d57600080fd5b505af11580156200c242573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200c29457600080fd5b505af11580156200c2a9573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200c30557600080fd5b505af11580156200c31a573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200c398939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200c3b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c3dc919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200c43d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c463919062010e5e565b92509250925060008282856040516020016200c4829392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200c4d79183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200c51f90899060040162010ec0565b600060405180830381600087803b1580156200c53a57600080fd5b505af11580156200c54f573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200c5a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c5c8919062010f19565b9150506200c5e4816002811115620014d457620014d462010f4f565b87156200c65957601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200c6249291169060279060040162010fa2565b600060405180830381600087803b1580156200c63f57600080fd5b505af11580156200c654573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200c6a757600080fd5b505af11580156200c6bc573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200c71557600080fd5b505af11580156200c72a573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200c7a8939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200c7c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c7ec919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200c82e918590600401918252602082015260400190565b606060405180830381865afa1580156200c84c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c872919062010e5e565b60405192995090975095506200c89190879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200c8e69183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200c92e90859060040162010ec0565b600060405180830381600087803b1580156200c94957600080fd5b505af11580156200c95e573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200c9ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c9d4919062010f19565b93506200c9f19050836002811115620014d457620014d462010f4f565b89156200cad55760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200ca4d57600080fd5b505af11580156200ca62573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200caa0929091169060279060040162010fa2565b600060405180830381600087803b1580156200cabb57600080fd5b505af11580156200cad0573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200cb2357600080fd5b505af11580156200cb38573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200cb8b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cbb1919062010f19565b9150506200cbcd816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200cc2257600080fd5b505af11580156200cc37573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200cc75929091169060279060040162010fa2565b600060405180830381600087803b1580156200cc9057600080fd5b505af11580156200cca5573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200ccf5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cd1b919062010f19565b91506200cd38905081600281111562001c2f5762001c2f62010f4f565b601f54603854604051630ff26fd160e01b81526001600160a01b0391821660048201526000929190911690630ff26fd190602401602060405180830381865afa1580156200cd8a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cdb091906201107e565b6037549091506200cdcc9082906001600160a01b0316620104ed565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200ce1a57600080fd5b505af11580156200ce2f573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa7915060240162002c18565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5783829060005260206000200180546200ceb99062010f65565b80601f01602080910402602001604051908101604052809291908181526020018280546200cee79062010f65565b80156200cf385780601f106200cf0c576101008083540402835291602001916200cf38565b820191906000526020600020905b8154815290600101906020018083116200cf1a57829003601f168201915b5050505050815260200190600101906200ce97565b60008054610100900460ff16156200cf6e5750600054610100900460ff1690565b60006000805160206201cf808339815191523b156200d07357604080516000805160206201cf80833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200cff5917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016201153c565b60408051601f19818403018152908290526200d011916201143e565b6000604051808303816000865af19150503d80600081146200d050576040519150601f19603f3d011682016040523d82523d6000602084013e6200d055565b606091505b50915050808060200190518101906200d06f919062011311565b9150505b919050565b60408051600280825260608201909252600091816020015b60608152602001906001900390816200d0905750506040805160018082528183019092529192506000919060208083019080368337505060375482519293506001600160a01b0316918391506000906200d0ee576200d0ee62010e2e565b60200260200101906001600160a01b031690816001600160a01b03168152505080826000815181106200d125576200d12562010e2e565b60200260200101819052508082600181518110620063ad57620063ad62010e2e565b601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e73926200d18292911690600090819060040162011335565b600060405180830381600087803b1580156200d19d57600080fd5b505af11580156200d1b2573d6000803e3d6000fd5b5050601f546031546040516366f17e7360e01b81526001600160a01b0392831694506366f17e7393506200d1f3929091169060009060019060040162011335565b600060405180830381600087803b1580156200d20e57600080fd5b505af11580156200d223573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b815260016004820152600093506001600160a01b03909116915063d574ea3d90602401602060405180830381865afa1580156200d274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d29a91906201107e565b6031549091506200d2b69082906001600160a01b0316620104ed565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b1580156200d31457600080fd5b505af11580156200d329573d6000803e3d6000fd5b50506031546040516001600160a01b0390911692507f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49150600090a2601f546031546040516302ea311d60e31b81526001600160a01b03918216600482015291169063175188e890602401600060405180830381600087803b1580156200d3af57600080fd5b505af11580156200d3c4573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d41657600080fd5b505af11580156200d42b573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b8152600160048201526001600160a01b03909116925063d574ea3d9150602401602060405180830381865afa1580156200d479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d49f91906201107e565b5050565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d4f157600080fd5b505af11580156200d506573d6000803e3d6000fd5b5050601f546030546040516366f17e7360e01b81526001600160a01b0392831694506366f17e73935062000701929091169060009060649060040162011335565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200d58f57600080fd5b505af11580156200d5a4573d6000803e3d6000fd5b5060009250600291506200d5b59050565b6040519080825280602002602001820160405280156200d5df578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200d606576200d60662010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200d63a576200d63a62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200d67990849060040162010a68565b600060405180830381600087803b1580156200d69457600080fd5b505af11580156200d6a9573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d6fb57600080fd5b505af11580156200d710573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200d76c57600080fd5b505af11580156200d781573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200d7ff939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200d81d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d843919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200d8a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d8ca919062010e5e565b92509250925060008282856040516020016200d8e99392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200d93e9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200d98690899060040162010ec0565b600060405180830381600087803b1580156200d9a157600080fd5b505af11580156200d9b6573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200da09573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200da2f919062010f19565b9150506200da4b816002811115620014d457620014d462010f4f565b87156200dac057601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200da8b9291169060279060040162010fa2565b600060405180830381600087803b1580156200daa657600080fd5b505af11580156200dabb573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200db0e57600080fd5b505af11580156200db23573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200db7c57600080fd5b505af11580156200db91573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200dc0f939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200dc2d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200dc53919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200dc95918590600401918252602082015260400190565b606060405180830381865afa1580156200dcb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200dcd9919062010e5e565b60405192995090975095506200dcf890879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200dd4d9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200dd9590859060040162010ec0565b600060405180830381600087803b1580156200ddb057600080fd5b505af11580156200ddc5573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200de15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200de3b919062010f19565b93506200de589050836002811115620014d457620014d462010f4f565b89156200df3c5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200deb457600080fd5b505af11580156200dec9573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200df07929091169060279060040162010fa2565b600060405180830381600087803b1580156200df2257600080fd5b505af11580156200df37573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200df8a57600080fd5b505af11580156200df9f573d6000803e3d6000fd5b5050601f546030546040516366f17e7360e01b81526001600160a01b0392831694506366f17e7393506200dfdf9290911690600090819060040162011335565b600060405180830381600087803b1580156200dffa57600080fd5b505af11580156200e00f573d6000803e3d6000fd5b505060405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf80833981519152925063491cc7c29150608401600060405180830381600087803b1580156200e07157600080fd5b505af11580156200e086573d6000803e3d6000fd5b50506037546040516001600160a01b0390911692507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a260375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200e11757600080fd5b505af11580156200e12c573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200e16a929091169060279060040162010fa2565b600060405180830381600087803b1580156200e18557600080fd5b505af11580156200e19a573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200e1ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e213919062010f19565b91505062003ac881600281111562001c2f5762001c2f62010f4f565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200e27757600080fd5b505af11580156200e28c573d6000803e3d6000fd5b5060009250600291506200e29d9050565b6040519080825280602002602001820160405280156200e2c7578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200e2ee576200e2ee62010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200e322576200e32262010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200e36190849060040162010a68565b600060405180830381600087803b1580156200e37c57600080fd5b505af11580156200e391573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200e3e357600080fd5b505af11580156200e3f8573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200e45457600080fd5b505af11580156200e469573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200e4e7939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200e505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e52b919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200e58c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e5b2919062010e5e565b92509250925060008282856040516020016200e5d19392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200e6269183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200e66e90899060040162010ec0565b600060405180830381600087803b1580156200e68957600080fd5b505af11580156200e69e573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200e6f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e717919062010f19565b9150506200e733816002811115620014d457620014d462010f4f565b87156200e7a857601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200e7739291169060279060040162010fa2565b600060405180830381600087803b1580156200e78e57600080fd5b505af11580156200e7a3573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200e7f657600080fd5b505af11580156200e80b573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200e86457600080fd5b505af11580156200e879573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200e8f7939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200e915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e93b919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200e97d918590600401918252602082015260400190565b606060405180830381865afa1580156200e99b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e9c1919062010e5e565b60405192995090975095506200e9e090879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200ea359183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200ea7d90859060040162010ec0565b600060405180830381600087803b1580156200ea9857600080fd5b505af11580156200eaad573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200eafd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200eb23919062010f19565b93506200eb409050836002811115620014d457620014d462010f4f565b89156200ec245760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200eb9c57600080fd5b505af11580156200ebb1573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200ebef929091169060279060040162010fa2565b600060405180830381600087803b1580156200ec0a57600080fd5b505af11580156200ec1f573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200ec7257600080fd5b505af11580156200ec87573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200ece057600080fd5b505af11580156200ecf5573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200ed33929091169060279060040162010fa2565b600060405180830381600087803b1580156200ed4e57600080fd5b505af11580156200ed63573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152600094508493509116906313e7c9d8906024016040805180830381865afa1580156200edb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200edde919062010f19565b915091506200edfb8160028111156200a494576200a49462010f4f565b50505050505050505050505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562003b30576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162003b11575050505050905090565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200eeb457600080fd5b505af11580156200eec9573d6000803e3d6000fd5b5060009250600291506200eeda9050565b6040519080825280602002602001820160405280156200ef04578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200ef2b576200ef2b62010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200ef5f576200ef5f62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200ef9e90849060040162010a68565b600060405180830381600087803b1580156200efb957600080fd5b505af11580156200efce573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200f02057600080fd5b505af11580156200f035573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200f09157600080fd5b505af11580156200f0a6573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200f124939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200f142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f168919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200f1c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f1ef919062010e5e565b92509250925060008282856040516020016200f20e9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200f2639183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200f2ab90899060040162010ec0565b600060405180830381600087803b1580156200f2c657600080fd5b505af11580156200f2db573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200f32e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f354919062010f19565b9150506200f370816002811115620014d457620014d462010f4f565b87156200f3e557601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200f3b09291169060279060040162010fa2565b600060405180830381600087803b1580156200f3cb57600080fd5b505af11580156200f3e0573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200f43357600080fd5b505af11580156200f448573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200f4a157600080fd5b505af11580156200f4b6573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200f534939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200f552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f578919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200f5ba918590600401918252602082015260400190565b606060405180830381865afa1580156200f5d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f5fe919062010e5e565b60405192995090975095506200f61d90879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200f6729183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200f6ba90859060040162010ec0565b600060405180830381600087803b1580156200f6d557600080fd5b505af11580156200f6ea573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200f73a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f760919062010f19565b93506200f77d9050836002811115620014d457620014d462010f4f565b89156200f8615760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200f7d957600080fd5b505af11580156200f7ee573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200f82c929091169060279060040162010fa2565b600060405180830381600087803b1580156200f84757600080fd5b505af11580156200f85c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200f8af57600080fd5b505af11580156200f8c4573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff1681526020014360646200f97891906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc906200f9b29085906004016201126d565b602060405180830381865afa1580156200f9d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f9f6919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200fa4e57600080fd5b505af11580156200fa63573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200faa1929091169060279060040162010fa2565b600060405180830381600087803b1580156200fabc57600080fd5b505af11580156200fad1573d6000803e3d6000fd5b505060395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200fb2a57600080fd5b505af11580156200fb3f573d6000803e3d6000fd5b5050601f54603a54604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200fb7d9290911690602a9060040162010fa2565b600060405180830381600087803b1580156200fb9857600080fd5b505af11580156200fbad573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa4916200fbf7918890600401918252602082015260400190565b606060405180830381865afa1580156200fc15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200fc3b919062010e5e565b92509250925060008282856040516020016200fc5a9392919062010e9d565b60408051808303601f19018152908290526041546338d07aa960e21b835260048301526024820187905291506000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200fcbe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200fce4919062010e5e565b60405192965090945092506000906200fd069085908590889060200162010e9d565b60408051601f198184030181526002808452606084018352909350600092916020830190803683375050604080516002808252606082019092529293506000929150602082015b60608152602001906001900390816200fd4d575050603a546038549192506001600160a01b03908116911610156200fe425760385482516001600160a01b039091169083906000906200fda4576200fda462010e2e565b6001600160a01b039283166020918202929092010152603a548351911690839060019081106200fdd8576200fdd862010e2e565b60200260200101906001600160a01b031690816001600160a01b03168152505083816000815181106200fe0f576200fe0f62010e2e565b602002602001018190525082816001815181106200fe31576200fe3162010e2e565b60200260200101819052506200ff00565b603a5482516001600160a01b039091169083906000906200fe67576200fe6762010e2e565b6001600160a01b0392831660209182029290920101526038548351911690839060019081106200fe9b576200fe9b62010e2e565b60200260200101906001600160a01b031690816001600160a01b03168152505082816000815181106200fed2576200fed262010e2e565b602002602001018190525083816001815181106200fef4576200fef462010e2e565b60200260200101819052505b601f546040516318cea58d60e01b81526000916001600160a01b0316906318cea58d906200ff37908d908790879060040162011282565b6020604051808303816000875af11580156200ff57573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ff7d919062011311565b90506200ffc0816040518060400160405280601e81526020017f466972737420657865637574696f6e2073686f756c6420737563636565640000815250620106da565b6000826000815181106200ffd8576200ffd862010e2e565b60200260200101519050826001815181106200fff8576200fff862010e2e565b60200260200101518360008151811062010016576201001662010e2e565b6020026020010181905250808360018151811062010038576201003862010e2e565b60200260200101819052506000846001815181106201005b576201005b62010e2e565b60200260200101518560008151811062010079576201007962010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250508085600181518110620100b057620100b062010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156201011e57600080fd5b505af115801562010133573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d91506201016d908f908990899060040162011282565b6020604051808303816000875af11580156201018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620101b3919062011311565b505050505050505050505050505050505050505050505050565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156201021b57600080fd5b505af115801562010230573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156201028957600080fd5b505af11580156201029e573d6000803e3d6000fd5b5050601f546030546040516366f17e7360e01b81526001600160a01b0392831694506366f17e739350620007019290911690600090819060040162011335565b60008082604051602001620102f491906201143e565b60408051808303601f190181529082905280516020909101206001625e79b760e01b031982526004820181905291506000805160206201cf808339815191529063ffa1864990602401602060405180830381865afa1580156201035b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906201038191906201107e565b6040516318caf8e360e31b81529092506000805160206201cf808339815191529063c657c71890620103ba90859087906004016201156f565b600060405180830381600087803b158015620103d557600080fd5b505af1158015620103ea573d6000803e3d6000fd5b50505050915091565b60006201040082620102de565b5092915050565b8082146200d49f576000805160206201cf60833981519152604051620104699060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620104a291906201159d565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620104db9190620115d6565b60405180910390a16200d49f62010804565b806001600160a01b0316826001600160a01b0316146200d49f576000805160206201cf60833981519152604051620105649060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516201059d919062011601565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620104db919062011646565b80604051602001620105e991906201143e565b60405160208183030381529060405280519060200120826040516020016201061291906201143e565b60405160208183030381529060405280519060200120146200d49f576000805160206201cf608339815191526040516201068a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472604082015263696e675d60e01b606082015260800190565b60405180910390a16000805160206201cfdc83398151915282604051620106b2919062011671565b60405180910390a16000805160206201cfdc83398151915281604051620104db9190620116b0565b816200d49f576000805160206201cfdc83398151915281604051620107009190620116db565b60405180910390a16200d49f825b8062003c4e576000805160206201cf60833981519152604051620107639060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003c4e62010804565b818314620107b1576000805160206201cfdc833981519152816040516201079d9190620116db565b60405180910390a1620107b1838362010407565b505050565b816001600160a01b0316836001600160a01b031614620107b1576000805160206201cfdc83398151915281604051620107f09190620116db565b60405180910390a1620107b18383620104ed565b6000805160206201cf808339815191523b15620108fc57604080516000805160206201cf80833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526201089792916020016201153c565b60408051601f1981840301815290829052620108b3916201143e565b6000604051808303816000865af19150503d8060008114620108f2576040519150601f19603f3d011682016040523d82523d6000602084013e620108f7565b606091505b505050505b6000805461ff001916610100179055565b60df806201170d83390190565b61017980620117ec83390190565b610767806201196583390190565b615f0280620120cc83390190565b610deb8062017fce83390190565b6101788062018db983390190565b6137998062018f3183390190565b610896806201c6ca83390190565b8280546201098a9062010f65565b90600052602060002090601f016020900481019282620109ae5760008555620109f9565b82601f10620109c957805160ff1916838001178555620109f9565b82800160010185558215620109f9579182015b82811115620109f9578251825591602001919060010190620109dc565b5062010a0792915062010a0b565b5090565b5b8082111562010a07576000815560010162010a0c565b600081518084526020808501945080840160005b8381101562010a5d5781516001600160a01b03168752958201959082019060010162010a36565b509495945050505050565b60208152600062010a7d602083018462010a22565b9392505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562010b2c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562010b165783516001600160e01b0319168252928b019260019290920191908b019062010aea565b50978a0197955050509187019160010162010aac565b50919998505050505050505050565b60005b8381101562010b5857818101518382015260200162010b3e565b83811115620007315750506000910152565b6000815180845262010b8481602086016020860162010b3b565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562010bf157603f1988860301845262010bde85835162010b6a565b9450928501929085019060010162010bbf565b5092979650505050505050565b60608152600062010c2a60608301600b81526a39b396b837b634b1bc969960a91b602082015260400190565b8281036020840152600c81526b73616d706c65506f6c69637960a01b60208201526040810191505082604083015292915050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60608152600062010cb260608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062010e1260208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121562010e5757600080fd5b5051919050565b60008060006060848603121562010e7457600080fd5b835160ff8116811462010e8657600080fd5b602085015160409095015190969495509392505050565b928352602083019190915260f81b6001600160f81b031916604082015260410190565b81516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff1691810191909152608060608201819052600c908201526b6d657461646174612075726960a01b60a082015260c00190565b6000806040838503121562010f2d57600080fd5b8251915060208301516003811062010f4457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062010f7a57607f821691505b6020821081141562010f9c57634e487b7160e01b600052602260045260246000fd5b50919050565b60018060a01b038316815260006020604081840152606060408401526000845481600182811c91508083168062010fda57607f831692505b85831081141562010ff957634e487b7160e01b85526022600452602485fd5b60a0880183905260c088018180156201101b57600181146201102d576201105a565b60ff198616825287820196506201105a565b60008b81526020902060005b86811015620110545781548482015290850190890162011039565b83019750505b50505087015460608701525050600290940154608090930192909252509092915050565b6000602082840312156201109157600080fd5b81516001600160a01b038116811462010a7d57600080fd5b60208152600062010e1260208301600b81526a39b396b837b634b1bc969960a91b602082015260400190565b600060208284031215620110e857600080fd5b815167ffffffffffffffff808211156201110157600080fd5b818401915084601f8301126201111657600080fd5b8151818111156201112b576201112b62010e18565b604051601f8201601f19908116603f0116810190838211818310171562011156576201115662010e18565b816040528281528760208487010111156201117057600080fd5b6201118383602083016020880162010b3b565b979650505050505050565b60008219821115620111b057634e487b7160e01b600052601160045260246000fd5b500190565b60006101008251818552620111cd8286018262010b6a565b91505060018060a01b0360208401511660208501526040830151620111fd60408601826001600160a01b03169052565b50606083015160608501526080830151848203608086015262011221828262010b6a565b91505060a083015184820360a08601526201123d828262010b6a565b91505060c08301516201125860c086018263ffffffff169052565b5060e083015160e08501528091505092915050565b60208152600062010a7d6020830184620111b5565b606081526000620112976060830186620111b5565b602083820381850152620112ac828762010a22565b915083820360408501528185518084528284019150828160051b85010183880160005b838110156201130157601f19878403018552620112ee83835162010b6a565b94860194925090850190600101620112cf565b50909a9950505050505050505050565b6000602082840312156201132457600080fd5b8151801515811462010a7d57600080fd5b6001600160a01b0393909316835260ff919091166020830152604082015260600190565b805160208201516001600160f81b03198082169291906001831015620113895780818460010360031b1b83161693505b505050919050565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b848110156201141c57888703605f19018652825180518089529085019085890190845b81811015620114055783516001600160a01b031683529287019291870191600101620113de565b5090985050509483019491830191600101620113bb565b5050508584038187015250505062011435818562010b6a565b95945050505050565b600082516201145281846020870162010b3b565b9190910192915050565b81516000908290602080860184805b84811015620114ba5782518051908501908790845b81811015620114a75783516001600160a01b03168352928701929187019160010162011480565b509097505050918301916001016201146b565b5093979650505050505050565b604081526000620114ec60408301600481526339b3af9960e11b602082015260400190565b828103602093840152600c81526b73616d706c65436f6e66696760a01b928101929092525060400190565b60208152600062010e1260208301600481526339b3af9960e11b602082015260400190565b6001600160e01b03198316815281516000906201156181600485016020870162010b3b565b919091016004019392505050565b6001600160a01b0383168152604060208201819052600090620115959083018462010b6a565b949350505050565b604081526000620115c860408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b604081526000620115c860408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006201162c60408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006201162c60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006201169c60408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262011595818562010b6a565b6040815260006201169c60408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201526422b93937b960d91b606082015260806020820152600062010a7d608083018462010b6a56fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f500000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4f70657261746f724f6e65416c6961732073686f756c64207374696c6c206265206173736f6369617465642077697468206f70657261746f724f6e65280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583466972737420657865637574696f6e20697320657870656374656420746f20737563636565644f70657261746f722074776f2073686f756c64206e6f7420626520726567697374657265644f70657261746f72206f6e652073686f756c642062652072656769737465726564885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45a2646970667358221220a61eccf24154c6b0aa9dd9bf0457190cb8dcae298341f740a13595a3fea583ae64736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;1096:20211:86;2329:22:116;;1096:20211:86;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;1096:20211:86;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;1096:20211:86:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1096:20211:86;;;-1:-1:-1;1096:20211:86;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;1096:20211:86;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610620002335760003560e01c806374dbdd72116200012f578063ba414fa611620000b3578063da709cdf1162000075578063da709cdf1462000584578063e20c9f71146200059c578063e73c905814620005b4578063f0b1e95d14620005cc578063fa7626d414620005e457005b8063ba414fa614620004fb578063c469d8061462000524578063c584ea29146200053c578063d27eb3581462000554578063d80dd929146200056c57005b8063916a17c611620000fd578063916a17c614620004835780639483f3a6146200049b578063ac34a9ff14620004b3578063ae05faf014620004cb578063b5508aa914620004e357005b806374dbdd72146200041457806378007681146200042c5780637cd1e621146200044457806385226c81146200045c57005b80632db0035811620001b75780635ee285d111620001855780635ee285d1146200038d5780635f161c3414620003a557806360e6bb8314620003bd57806362b4f17b14620003d557806366d9a9a014620003ed57005b80632db00358146200032d5780633932f89014620003455780633e5e3c23146200035d5780633f7286f4146200037557005b80631cb11ea611620002015780631cb11ea6146200029d5780631ed7831c14620002b557806320843b4e14620002e557806320a4495514620002fd5780632ba8f2f6146200031557005b8063051cebb1146200023d5780630a9254e414620002555780631aa8b734146200026d5780631c7a8d63146200028557005b366200023b57005b005b3480156200024a57600080fd5b506200023b62000600565b3480156200026257600080fd5b506200023b62000737565b3480156200027a57600080fd5b506200023b62000fd0565b3480156200029257600080fd5b506200023b62001e40565b348015620002aa57600080fd5b506200023b62002cc7565b348015620002c257600080fd5b50620002cd62003ad6565b604051620002dc919062010a68565b60405180910390f35b348015620002f257600080fd5b506200023b62003b3a565b3480156200030a57600080fd5b506200023b62003c51565b3480156200032257600080fd5b506200023b62004f6e565b3480156200033a57600080fd5b506200023b62005218565b3480156200035257600080fd5b506200023b62006301565b3480156200036a57600080fd5b50620002cd62006504565b3480156200038257600080fd5b50620002cd62006566565b3480156200039a57600080fd5b506200023b620065c8565b348015620003b257600080fd5b506200023b62006775565b348015620003ca57600080fd5b506200023b62007759565b348015620003e257600080fd5b506200023b620085e7565b348015620003fa57600080fd5b5062000405620086e2565b604051620002dc919062010a84565b3480156200042157600080fd5b506200023b620087d5565b3480156200043957600080fd5b506200023b620088e6565b3480156200045157600080fd5b506200023b620098c8565b3480156200046957600080fd5b50620004746200a7c2565b604051620002dc919062010b98565b3480156200049057600080fd5b50620004056200a89c565b348015620004a857600080fd5b506200023b6200a986565b348015620004c057600080fd5b506200023b6200b354565b348015620004d857600080fd5b506200023b6200c0e0565b348015620004f057600080fd5b50620004746200ce73565b3480156200050857600080fd5b50620005136200cf4d565b6040519015158152602001620002dc565b3480156200053157600080fd5b506200023b6200d078565b3480156200054957600080fd5b506200023b6200d147565b3480156200056157600080fd5b506200023b6200d4a3565b3480156200057957600080fd5b506200023b6200d547565b3480156200059157600080fd5b506200023b6200e22f565b348015620005a957600080fd5b50620002cd6200ee0a565b348015620005c157600080fd5b506200023b6200ee6c565b348015620005d957600080fd5b506200023b620101cd565b348015620005f157600080fd5b50600054620005139060ff1681565b601f5460405163c0443c5f60e01b81526001600160a01b039091169063c0443c5f90620006339060019060040162010bfe565b600060405180830381600087803b1580156200064e57600080fd5b505af115801562000663573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620006b557600080fd5b505af1158015620006ca573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f9150620007019060019060040162010bfe565b600060405180830381600087803b1580156200071c57600080fd5b505af115801562000731573d6000803e3d6000fd5b50505050565b6032546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200078c57600080fd5b505af1158015620007a1573d6000803e3d6000fd5b50505050604051620007b3906201090d565b604051809103906000f080158015620007d0573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055604051620007ff906201091a565b604051809103906000f0801580156200081c573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b039283161790556032546040519116906200084d9062010928565b6001600160a01b039091168152602001604051809103906000f0801580156200087a573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620008b99062010936565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620008f6573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b54604051919216906200092b9062010944565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200095f573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b8152919263eb990c5992620009ae9230921690600090819060040162010c5e565b600060405180830381600087803b158015620009c957600080fd5b505af1158015620009de573d6000803e3d6000fd5b50505050604051620009f09062010952565b604051809103906000f08015801562000a0d573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392831617905560325460405191169062000a3e9062010928565b6001600160a01b039091168152602001604051809103906000f08015801562000a6b573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b039290921691909117905560405162000a9a9062010960565b604051809103906000f08015801562000ab7573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e546040519192169062000aec9062010944565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000b20573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b15801562000ba957600080fd5b505af115801562000bbe573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000c1057600080fd5b505af115801562000c25573d6000803e3d6000fd5b50506040516303223eab60e11b81523060048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562000c7157600080fd5b505af115801562000c86573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f915062000cbd9060019060040162010c87565b600060405180830381600087803b15801562000cd857600080fd5b505af115801562000ced573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d3f57600080fd5b505af115801562000d54573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925062000d7591506201096e565b6001600160a01b039091168152602001604051809103906000f08015801562000da2573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b9062000de39060040162010de7565b600060405180830381600087803b15801562000dfe57600080fd5b505af115801562000e13573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b602082015262000e6690620102de565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b602082015262000ebb90620102de565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b602082015262000f0b90620102de565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b602082015262000f6190620102de565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000fae90620103f3565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200101857600080fd5b505af11580156200102d573d6000803e3d6000fd5b5060009250600291506200103e9050565b60405190808252806020026020018201604052801562001068578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200108f576200108f62010e2e565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620010c357620010c362010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200110290849060040162010a68565b600060405180830381600087803b1580156200111d57600080fd5b505af115801562001132573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200118457600080fd5b505af115801562001199573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b158015620011f557600080fd5b505af11580156200120a573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362001288939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620012a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012cc919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200132d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001353919062010e5e565b9250925092506000828285604051602001620013729392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620013c79183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200140f90899060040162010ec0565b600060405180830381600087803b1580156200142a57600080fd5b505af11580156200143f573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562001492573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b8919062010f19565b915050620014dc816002811115620014d457620014d462010f4f565b600062010407565b87156200155157601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200151c9291169060279060040162010fa2565b600060405180830381600087803b1580156200153757600080fd5b505af11580156200154c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200159f57600080fd5b505af1158015620015b4573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200160d57600080fd5b505af115801562001622573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c8893620016a0939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620016be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016e4919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162001726918590600401918252602082015260400190565b606060405180830381865afa15801562001744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176a919062010e5e565b60405192995090975095506200178990879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620017de9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200182690859060040162010ec0565b600060405180830381600087803b1580156200184157600080fd5b505af115801562001856573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa158015620018a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018cc919062010f19565b9350620018e99050836002811115620014d457620014d462010f4f565b8915620019cd5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200194557600080fd5b505af11580156200195a573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062001998929091169060279060040162010fa2565b600060405180830381600087803b158015620019b357600080fd5b505af1158015620019c8573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001a1b57600080fd5b505af115801562001a30573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562001a8957600080fd5b505af115801562001a9e573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562001af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b17919062010f19565b91505062001b33816002811115620014d457620014d462010f4f565b601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262001b6c9291169060279060040162010fa2565b600060405180830381600087803b15801562001b8757600080fd5b505af115801562001b9c573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562001bec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c12919062010f19565b915062001c37905081600281111562001c2f5762001c2f62010f4f565b600162010407565b601f54603854604051630ff26fd160e01b81526001600160a01b0391821660048201526000929190911690630ff26fd190602401602060405180830381865afa15801562001c89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001caf91906201107e565b60375490915062001ccb9082906001600160a01b0316620104ed565b601f54603854603b54604051621ba1eb60e01b81526001600160a01b0392831660048201529082166024820152911690621ba1eb90604401600060405180830381600087803b15801562001d1e57600080fd5b505af115801562001d33573d6000803e3d6000fd5b5050601f54603b54604051630ff26fd160e01b81526001600160a01b0391821660048201526000945091169150630ff26fd190602401602060405180830381865afa15801562001d87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dad91906201107e565b60375490915062001dc99082906001600160a01b0316620104ed565b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001e1757600080fd5b505af115801562001e2c573d6000803e3d6000fd5b505050505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b15801562001e8857600080fd5b505af115801562001e9d573d6000803e3d6000fd5b50600092506002915062001eae9050565b60405190808252806020026020018201604052801562001ed8578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062001eff5762001eff62010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062001f335762001f3362010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062001f7290849060040162010a68565b600060405180830381600087803b15801562001f8d57600080fd5b505af115801562001fa2573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001ff457600080fd5b505af115801562002009573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200206557600080fd5b505af11580156200207a573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c8893620020f8939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562002116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200213c919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200219d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021c3919062010e5e565b9250925092506000828285604051602001620021e29392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620022379183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200227f90899060040162010ec0565b600060405180830381600087803b1580156200229a57600080fd5b505af1158015620022af573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562002302573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002328919062010f19565b91505062002344816002811115620014d457620014d462010f4f565b8715620023b957601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d92620023849291169060279060040162010fa2565b600060405180830381600087803b1580156200239f57600080fd5b505af1158015620023b4573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200240757600080fd5b505af11580156200241c573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200247557600080fd5b505af11580156200248a573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362002508939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562002526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200254c919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200258e918590600401918252602082015260400190565b606060405180830381865afa158015620025ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025d2919062010e5e565b6040519299509097509550620025f190879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620026469183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200268e90859060040162010ec0565b600060405180830381600087803b158015620026a957600080fd5b505af1158015620026be573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200270e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002734919062010f19565b9350620027519050836002811115620014d457620014d462010f4f565b8915620028355760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620027ad57600080fd5b505af1158015620027c2573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062002800929091169060279060040162010fa2565b600060405180830381600087803b1580156200281b57600080fd5b505af115801562002830573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200288357600080fd5b505af115801562002898573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b158015620028f157600080fd5b505af115801562002906573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062002944929091169060279060040162010fa2565b600060405180830381600087803b1580156200295f57600080fd5b505af115801562002974573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa158015620029c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029ed919062010f19565b91505062002a0981600281111562001c2f5762001c2f62010f4f565b60395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b15801562002a5e57600080fd5b505af115801562002a73573d6000803e3d6000fd5b5050601f54603a54604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062002ab19290911690602a9060040162010fa2565b600060405180830381600087803b15801562002acc57600080fd5b505af115801562002ae1573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562002b34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b5a919062010f19565b91505062002b7681600281111562001c2f5762001c2f62010f4f565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002bc457600080fd5b505af115801562002bd9573d6000803e3d6000fd5b505060395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa791506024015b600060405180830381600087803b15801562002c3357600080fd5b505af115801562002c48573d6000803e3d6000fd5b5050601f54603854603b54604051621ba1eb60e01b81526001600160a01b039283166004820152908216602482015291169250621ba1eb9150604401600060405180830381600087803b15801562002c9f57600080fd5b505af115801562002cb4573d6000803e3d6000fd5b5050505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b15801562002d0f57600080fd5b505af115801562002d24573d6000803e3d6000fd5b50600092506002915062002d359050565b60405190808252806020026020018201604052801562002d5f578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062002d865762002d8662010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062002dba5762002dba62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062002df990849060040162010a68565b600060405180830381600087803b15801562002e1457600080fd5b505af115801562002e29573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002e7b57600080fd5b505af115801562002e90573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562002eec57600080fd5b505af115801562002f01573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362002f7f939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562002f9d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fc3919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562003024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200304a919062010e5e565b9250925092506000828285604051602001620030699392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620030be9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200310690899060040162010ec0565b600060405180830381600087803b1580156200312157600080fd5b505af115801562003136573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562003189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031af919062010f19565b915050620031cb816002811115620014d457620014d462010f4f565b87156200324057601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200320b9291169060279060040162010fa2565b600060405180830381600087803b1580156200322657600080fd5b505af11580156200323b573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200328e57600080fd5b505af1158015620032a3573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b158015620032fc57600080fd5b505af115801562003311573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200338f939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620033ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033d3919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162003415918590600401918252602082015260400190565b606060405180830381865afa15801562003433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003459919062010e5e565b60405192995090975095506200347890879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620034cd9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200351590859060040162010ec0565b600060405180830381600087803b1580156200353057600080fd5b505af115801562003545573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562003595573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035bb919062010f19565b9350620035d89050836002811115620014d457620014d462010f4f565b8915620036bc5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200363457600080fd5b505af115801562003649573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062003687929091169060279060040162010fa2565b600060405180830381600087803b158015620036a257600080fd5b505af1158015620036b7573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200370a57600080fd5b505af11580156200371f573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562003772573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003798919062010f19565b915050620037b4816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200380957600080fd5b505af11580156200381e573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200385c929091169060279060040162010fa2565b600060405180830381600087803b1580156200387757600080fd5b505af11580156200388c573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa158015620038dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003902919062010f19565b91506200391f905081600281111562001c2f5762001c2f62010f4f565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b1580156200397d57600080fd5b505af115801562003992573d6000803e3d6000fd5b50506037546040516001600160a01b0390911692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a2601f546037546040516351b27a6d60e11b81526001600160a01b03918216600482015291169063a364f4da90602401600060405180830381600087803b15801562003a1857600080fd5b505af115801562003a2d573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562003a7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003aa3919062010f19565b915062003ac8905081600281111562003ac05762003ac062010f4f565b600262010407565b505050505050505050505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562003b3057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162003b11575b5050505050905090565b601f5460405163c0443c5f60e01b81526001600160a01b039091169063c0443c5f9062003b6d9060019060040162010bfe565b600060405180830381600087803b15801562003b8857600080fd5b505af115801562003b9d573d6000803e3d6000fd5b5050601f5460405163d9d4e99f60e01b8152600093506001600160a01b03909116915063d9d4e99f9062003bd490600401620110a9565b600060405180830381865afa15801562003bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c1c9190810190620110d5565b905062003c4e816040518060400160405280600c81526020016b73616d706c65506f6c69637960a01b815250620105d6565b50565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b15801562003c9957600080fd5b505af115801562003cae573d6000803e3d6000fd5b50600092506002915062003cbf9050565b60405190808252806020026020018201604052801562003ce9578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062003d105762003d1062010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062003d445762003d4462010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062003d8390849060040162010a68565b600060405180830381600087803b15801562003d9e57600080fd5b505af115801562003db3573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003e0557600080fd5b505af115801562003e1a573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562003e7657600080fd5b505af115801562003e8b573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362003f09939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562003f27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f4d919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562003fae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fd4919062010e5e565b925092509250600082828560405160200162003ff39392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909350602791620040489183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200409090899060040162010ec0565b600060405180830381600087803b158015620040ab57600080fd5b505af1158015620040c0573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562004113573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004139919062010f19565b91505062004155816002811115620014d457620014d462010f4f565b8715620041ca57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d92620041959291169060279060040162010fa2565b600060405180830381600087803b158015620041b057600080fd5b505af1158015620041c5573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200421857600080fd5b505af11580156200422d573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200428657600080fd5b505af11580156200429b573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362004319939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562004337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200435d919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200439f918590600401918252602082015260400190565b606060405180830381865afa158015620043bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620043e3919062010e5e565b60405192995090975095506200440290879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620044579183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200449f90859060040162010ec0565b600060405180830381600087803b158015620044ba57600080fd5b505af1158015620044cf573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200451f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004545919062010f19565b9350620045629050836002811115620014d457620014d462010f4f565b8915620046465760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620045be57600080fd5b505af1158015620045d3573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062004611929091169060279060040162010fa2565b600060405180830381600087803b1580156200462c57600080fd5b505af115801562004641573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200469457600080fd5b505af1158015620046a9573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff1681526020014360646200475d91906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc90620047979085906004016201126d565b602060405180830381865afa158015620047b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047db919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200483357600080fd5b505af115801562004848573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062004886929091169060279060040162010fa2565b600060405180830381600087803b158015620048a157600080fd5b505af1158015620048b6573d6000803e3d6000fd5b505060395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200490f57600080fd5b505af115801562004924573d6000803e3d6000fd5b5050601f54603a54604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d9350620049629290911690602a9060040162010fa2565b600060405180830381600087803b1580156200497d57600080fd5b505af115801562004992573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa491620049dc918890600401918252602082015260400190565b606060405180830381865afa158015620049fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a20919062010e5e565b925092509250600082828560405160200162004a3f9392919062010e9d565b60408051808303601f19018152908290526041546338d07aa960e21b835260048301526024820187905291506000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562004aa3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004ac9919062010e5e565b604051929650909450925060009062004aeb9085908590889060200162010e9d565b60408051601f198184030181526002808452606084018352909350600092916020830190803683375050604080516002808252606082019092529293506000929150602082015b606081526020019060019003908162004b32575050603a546038549192506001600160a01b039081169116101562004c275760385482516001600160a01b0390911690839060009062004b895762004b8962010e2e565b6001600160a01b039283166020918202929092010152603a5483519116908390600190811062004bbd5762004bbd62010e2e565b60200260200101906001600160a01b031690816001600160a01b031681525050838160008151811062004bf45762004bf462010e2e565b6020026020010181905250828160018151811062004c165762004c1662010e2e565b602002602001018190525062004ce5565b603a5482516001600160a01b0390911690839060009062004c4c5762004c4c62010e2e565b6001600160a01b03928316602091820292909201015260385483519116908390600190811062004c805762004c8062010e2e565b60200260200101906001600160a01b031690816001600160a01b031681525050828160008151811062004cb75762004cb762010e2e565b6020026020010181905250838160018151811062004cd95762004cd962010e2e565b60200260200101819052505b601f546040516318cea58d60e01b81526001600160a01b03909116906318cea58d9062004d1b908c908690869060040162011282565b6020604051808303816000875af115801562004d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d61919062011311565b5060008160008151811062004d7a5762004d7a62010e2e565b602002602001015190508160018151811062004d9a5762004d9a62010e2e565b60200260200101518260008151811062004db85762004db862010e2e565b6020026020010181905250808260018151811062004dda5762004dda62010e2e565b602002602001018190525060008360018151811062004dfd5762004dfd62010e2e565b60200260200101518460008151811062004e1b5762004e1b62010e2e565b60200260200101906001600160a01b031690816001600160a01b031681525050808460018151811062004e525762004e5262010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562004ec057600080fd5b505af115801562004ed5573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d915062004f0f908e908890889060040162011282565b6020604051808303816000875af115801562004f2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f55919062011311565b5050505050505050505050505050505050505050505050565b601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e739262004fa992911690600090819060040162011335565b600060405180830381600087803b15801562004fc457600080fd5b505af115801562004fd9573d6000803e3d6000fd5b5050601f546031546040516366f17e7360e01b81526001600160a01b0392831694506366f17e7393506200501a929091169060009060019060040162011335565b600060405180830381600087803b1580156200503557600080fd5b505af11580156200504a573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b815260016004820152600093506001600160a01b03909116915063d574ea3d90602401602060405180830381865afa1580156200509b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050c191906201107e565b603154909150620050dd9082906001600160a01b0316620104ed565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200512b57600080fd5b505af115801562005140573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200519957600080fd5b505af1158015620051ae573d6000803e3d6000fd5b5050601f546031546040516302ea311d60e31b81526001600160a01b0391821660048201529116925063175188e89150602401600060405180830381600087803b158015620051fc57600080fd5b505af115801562005211573d6000803e3d6000fd5b5050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200526057600080fd5b505af115801562005275573d6000803e3d6000fd5b506000925060029150620052869050565b604051908082528060200260200182016040528015620052b0578160200160208202803683370190505b5060375481519192506001600160a01b0316908290600090620052d757620052d762010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200530b576200530b62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200534a90849060040162010a68565b600060405180830381600087803b1580156200536557600080fd5b505af11580156200537a573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620053cc57600080fd5b505af1158015620053e1573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200543d57600080fd5b505af115801562005452573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c8893620054d0939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620054ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005514919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562005575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200559b919062010e5e565b9250925092506000828285604051602001620055ba9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200560f9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200565790899060040162010ec0565b600060405180830381600087803b1580156200567257600080fd5b505af115801562005687573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa158015620056da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005700919062010f19565b9150506200571c816002811115620014d457620014d462010f4f565b87156200579157601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200575c9291169060279060040162010fa2565b600060405180830381600087803b1580156200577757600080fd5b505af11580156200578c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620057df57600080fd5b505af1158015620057f4573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200584d57600080fd5b505af115801562005862573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c8893620058e0939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa158015620058fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005924919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162005966918590600401918252602082015260400190565b606060405180830381865afa15801562005984573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620059aa919062010e5e565b6040519299509097509550620059c990879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a9162005a1e9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062005a6690859060040162010ec0565b600060405180830381600087803b15801562005a8157600080fd5b505af115801562005a96573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562005ae6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005b0c919062010f19565b935062005b299050836002811115620014d457620014d462010f4f565b891562005c0d5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b15801562005b8557600080fd5b505af115801562005b9a573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062005bd8929091169060279060040162010fa2565b600060405180830381600087803b15801562005bf357600080fd5b505af115801562005c08573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562005c5b57600080fd5b505af115801562005c70573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff16815260200143606462005d2491906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc9062005d5e9085906004016201126d565b602060405180830381865afa15801562005d7c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005da2919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b15801562005dfd57600080fd5b505af115801562005e12573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062005e50929091169060279060040162010fa2565b600060405180830381600087803b15801562005e6b57600080fd5b505af115801562005e80573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa49162005eca918990600401918252602082015260400190565b606060405180830381865afa15801562005ee8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005f0e919062010e5e565b92509250925081818460405160200162005f2b9392919062010e9d565b60408051601f19818403018152600180845283830190925295506000919060208083019080368337505060385482519293506001600160a01b03169183915060009062005f7c5762005f7c62010e2e565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b606081526020019060019003908162005fac579050509050858160008151811062005fdb5762005fdb62010e2e565b6020908102919091010152601f546040516318cea58d60e01b81526000916001600160a01b0316906318cea58d906200601d908c908790879060040162011282565b6020604051808303816000875af11580156200603d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006063919062011311565b90506200608a816040518060600160405280602681526020016201cffc60269139620106da565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620060d857600080fd5b505af1158015620060ed573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d915062006127908c908790879060040162011282565b6020604051808303816000875af115801562006147573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200616d919062011311565b50604080516101408101825260096101008201908152681b995dd5185cdad25960ba1b6101208301528152306020808301829052828401919091526000606083018190528351808301855281815260808401528351808501909452600a84526974657374506f6c69637960b01b9184019190915260a0820192909252600160c082015260e08101620062014360646201118e565b81525090506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200625457600080fd5b505af115801562006269573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d9150620062a39084908890889060040162011282565b6020604051808303816000875af1158015620062c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620062e9919062011311565b50505050505050505050505050505050505050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816200631857505060408051600180825281830190925291925060009190602080830190803683375050602f5482519293506001600160a01b03169183915060009062006376576200637662010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250508082600081518110620063ad57620063ad62010e2e565b6020908102919091010152604080516001808252818301909252600091602082018180368337019050506040805160016020820181905292935001604051602081830303815290604052620064029062011359565b8260008151811062006418576200641862010e2e565b60200101906001600160f81b031916908160001a9053506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200647d57600080fd5b505af115801562006492573d6000803e3d6000fd5b5050601f54604051630a2814a960e31b81526001600160a01b039091169250635140a5489150620064ca908790869060040162011391565b600060405180830381600087803b158015620064e557600080fd5b505af1158015620064fa573d6000803e3d6000fd5b5050505050505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801562003b30576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162003b11575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562003b30576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162003b11575050505050905090565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b1580156200662657600080fd5b505af11580156200663b573d6000803e3d6000fd5b50506030546040516001600160a01b0390911692507f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f19150600090a2601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e7392620066b292911690600090819060040162011335565b600060405180830381600087803b158015620066cd57600080fd5b505af1158015620066e2573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b815260006004820181905293506001600160a01b03909116915063d574ea3d90602401602060405180830381865afa15801562006733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200675991906201107e565b60305490915062003c4e9082906001600160a01b0316620104ed565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b158015620067bd57600080fd5b505af1158015620067d2573d6000803e3d6000fd5b506000925060029150620067e39050565b6040519080825280602002602001820160405280156200680d578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062006834576200683462010e2e565b6001600160a01b03928316602091820292909201015260395482519116908290600190811062006868576200686862010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f890620068a790849060040162010a68565b600060405180830381600087803b158015620068c257600080fd5b505af1158015620068d7573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200692957600080fd5b505af11580156200693e573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200699a57600080fd5b505af1158015620069af573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362006a2d939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562006a4b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006a71919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562006ad2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006af8919062010e5e565b925092509250600082828560405160200162006b179392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162006b6c9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062006bb490899060040162010ec0565b600060405180830381600087803b15801562006bcf57600080fd5b505af115801562006be4573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562006c37573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006c5d919062010f19565b91505062006c79816002811115620014d457620014d462010f4f565b871562006cee57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262006cb99291169060279060040162010fa2565b600060405180830381600087803b15801562006cd457600080fd5b505af115801562006ce9573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562006d3c57600080fd5b505af115801562006d51573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562006daa57600080fd5b505af115801562006dbf573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362006e3d939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562006e5b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e81919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162006ec3918590600401918252602082015260400190565b606060405180830381865afa15801562006ee1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f07919062010e5e565b604051929950909750955062006f2690879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a9162006f7b9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062006fc390859060040162010ec0565b600060405180830381600087803b15801562006fde57600080fd5b505af115801562006ff3573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562007043573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007069919062010f19565b9350620070869050836002811115620014d457620014d462010f4f565b89156200716a5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620070e257600080fd5b505af1158015620070f7573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062007135929091169060279060040162010fa2565b600060405180830381600087803b1580156200715057600080fd5b505af115801562007165573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620071b857600080fd5b505af1158015620071cd573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562007220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007246919062010f19565b91505062007262816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620072b757600080fd5b505af1158015620072cc573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200730a929091169060279060040162010fa2565b600060405180830381600087803b1580156200732557600080fd5b505af11580156200733a573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200738a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620073b0919062010f19565b9150620073cd905081600281111562001c2f5762001c2f62010f4f565b601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e73926200740892911690600090819060040162011335565b600060405180830381600087803b1580156200742357600080fd5b505af115801562007438573d6000803e3d6000fd5b506000925060019150620074499050565b6040519080825280602002602001820160405280156200747e57816020015b6060815260200190600190039081620074685790505b506040805160018082528183019092529192506000919060208083019080368337505060375482519293506001600160a01b031691839150600090620074c857620074c862010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250508082600081518110620074ff57620074ff62010e2e565b6020908102919091010152604080516001808252818301909252600091602082018180368337019050506040805160016020820181905292935001604051602081830303815290604052620075549062011359565b826000815181106200756a576200756a62010e2e565b60200101906001600160f81b031916908160001a90535060405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b158015620075df57600080fd5b505af1158015620075f4573d6000803e3d6000fd5b50505050816040516200760891906201143e565b6040518091039020846040516200762091906201145c565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a3601f54604051630a2814a960e31b81526001600160a01b0390911690635140a5489062007684908790869060040162011391565b600060405180830381600087803b1580156200769f57600080fd5b505af1158015620076b4573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562007704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200772a919062010f19565b955062007747905085600281111562001c2f5762001c2f62010f4f565b50505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b158015620077a157600080fd5b505af1158015620077b6573d6000803e3d6000fd5b506000925060029150620077c79050565b604051908082528060200260200182016040528015620077f1578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062007818576200781862010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200784c576200784c62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200788b90849060040162010a68565b600060405180830381600087803b158015620078a657600080fd5b505af1158015620078bb573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200790d57600080fd5b505af115801562007922573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200797e57600080fd5b505af115801562007993573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362007a11939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562007a2f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007a55919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562007ab6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007adc919062010e5e565b925092509250600082828560405160200162007afb9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162007b509183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062007b9890899060040162010ec0565b600060405180830381600087803b15801562007bb357600080fd5b505af115801562007bc8573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562007c1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007c41919062010f19565b91505062007c5d816002811115620014d457620014d462010f4f565b871562007cd257601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262007c9d9291169060279060040162010fa2565b600060405180830381600087803b15801562007cb857600080fd5b505af115801562007ccd573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562007d2057600080fd5b505af115801562007d35573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562007d8e57600080fd5b505af115801562007da3573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362007e21939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562007e3f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e65919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162007ea7918590600401918252602082015260400190565b606060405180830381865afa15801562007ec5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007eeb919062010e5e565b604051929950909750955062007f0a90879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a9162007f5f9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062007fa790859060040162010ec0565b600060405180830381600087803b15801562007fc257600080fd5b505af115801562007fd7573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa15801562008027573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200804d919062010f19565b93506200806a9050836002811115620014d457620014d462010f4f565b89156200814e5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620080c657600080fd5b505af1158015620080db573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062008119929091169060279060040162010fa2565b600060405180830381600087803b1580156200813457600080fd5b505af115801562008149573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200819c57600080fd5b505af1158015620081b1573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff1681526020014360646200826591906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc906200829f9085906004016201126d565b602060405180830381865afa158015620082bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620082e3919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200833e57600080fd5b505af115801562008353573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d935062008391929091169060279060040162010fa2565b600060405180830381600087803b158015620083ac57600080fd5b505af1158015620083c1573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa4916200840b918990600401918252602082015260400190565b606060405180830381865afa15801562008429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200844f919062010e5e565b9250925092508181846040516020016200846c9392919062010e9d565b60408051601f19818403018152600180845283830190925295506000919060208083019080368337505060385482519293506001600160a01b031691839150600090620084bd57620084bd62010e2e565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b6060815260200190600190039081620084ed57905050905085816000815181106200851c576200851c62010e2e565b6020908102919091010152601f546040516318cea58d60e01b81526000916001600160a01b0316906318cea58d906200855e908c908790879060040162011282565b6020604051808303816000875af11580156200857e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085a4919062011311565b90506200608a816040518060400160405280601e81526020017f466972737420657865637574696f6e2073686f756c6420737563636565640000815250620106da565b601f5460405163d20e78c960e01b81526001600160a01b039091169063d20e78c9906200861790600401620114c7565b600060405180830381600087803b1580156200863257600080fd5b505af115801562008647573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200869957600080fd5b505af1158015620086ae573d6000803e3d6000fd5b5050601f5460405163d20e78c960e01b81526001600160a01b03909116925063d20e78c991506200070190600401620114c7565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620087b357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620087745790505b5050505050815250508152602001906001019062008706565b50505050905090565b601f5460405163d20e78c960e01b81526001600160a01b039091169063d20e78c9906200880590600401620114c7565b600060405180830381600087803b1580156200882057600080fd5b505af115801562008835573d6000803e3d6000fd5b5050601f5460405163ddf6a51b60e01b8152600093506001600160a01b03909116915063ddf6a51b906200886c9060040162011517565b600060405180830381865afa1580156200888a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620088b49190810190620110d5565b905062003c4e816040518060400160405280600c81526020016b73616d706c65436f6e66696760a01b815250620105d6565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200892e57600080fd5b505af115801562008943573d6000803e3d6000fd5b506000925060029150620089549050565b6040519080825280602002602001820160405280156200897e578160200160208202803683370190505b5060375481519192506001600160a01b0316908290600090620089a557620089a562010e2e565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620089d957620089d962010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f89062008a1890849060040162010a68565b600060405180830381600087803b15801562008a3357600080fd5b505af115801562008a48573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562008a9a57600080fd5b505af115801562008aaf573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562008b0b57600080fd5b505af115801562008b20573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362008b9e939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562008bbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008be2919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562008c43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008c69919062010e5e565b925092509250600082828560405160200162008c889392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162008cdd9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062008d2590899060040162010ec0565b600060405180830381600087803b15801562008d4057600080fd5b505af115801562008d55573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562008da8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008dce919062010f19565b91505062008dea816002811115620014d457620014d462010f4f565b871562008e5f57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262008e2a9291169060279060040162010fa2565b600060405180830381600087803b15801562008e4557600080fd5b505af115801562008e5a573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562008ead57600080fd5b505af115801562008ec2573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562008f1b57600080fd5b505af115801562008f30573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362008fae939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562008fcc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008ff2919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa49162009034918590600401918252602082015260400190565b606060405180830381865afa15801562009052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009078919062010e5e565b60405192995090975095506200909790879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a91620090ec9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200913490859060040162010ec0565b600060405180830381600087803b1580156200914f57600080fd5b505af115801562009164573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa158015620091b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620091da919062010f19565b9350620091f79050836002811115620014d457620014d462010f4f565b8915620092db5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200925357600080fd5b505af115801562009268573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d9350620092a6929091169060279060040162010fa2565b600060405180830381600087803b158015620092c157600080fd5b505af1158015620092d6573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200932957600080fd5b505af11580156200933e573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff168152602001436064620093f291906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc906200942c9085906004016201126d565b602060405180830381865afa1580156200944a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009470919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506060906000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b158015620094cb57600080fd5b505af1158015620094e0573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200951e929091169060279060040162010fa2565b600060405180830381600087803b1580156200953957600080fd5b505af11580156200954e573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa49162009598918990600401918252602082015260400190565b606060405180830381865afa158015620095b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620095dc919062010e5e565b925092509250818184604051602001620095f99392919062010e9d565b60408051601f19818403018152600180845283830190925295506000919060208083019080368337505060385482519293506001600160a01b0316918391506000906200964a576200964a62010e2e565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020015b60608152602001906001900390816200967a5790505090508581600081518110620096a957620096a962010e2e565b602090810291909101810191909152604080516101408101825260096101008201908152681b995dd5185cdad25960ba1b610120830152815230818401819052818301526000606082018190528251808501845281815260808301528251808401909352600a83526974657374506f6c69637960b01b9383019390935260a0810191909152600160c082015260e08101620097464360646201118e565b9052601f546040516325254a3f60e21b8152919250620097ce918a916001600160a01b03169063949528fc90620097829086906004016201126d565b602060405180830381865afa158015620097a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620097c6919062010e44565b14156201070e565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200981c57600080fd5b505af115801562009831573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d91506200986b9084908790879060040162011282565b6020604051808303816000875af11580156200988b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620098b1919062011311565b505050505050505050505050505050505050505050565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200991057600080fd5b505af115801562009925573d6000803e3d6000fd5b506000925060029150620099369050565b60405190808252806020026020018201604052801562009960578160200160208202803683370190505b5060375481519192506001600160a01b031690829060009062009987576200998762010e2e565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620099bb57620099bb62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f890620099fa90849060040162010a68565b600060405180830381600087803b15801562009a1557600080fd5b505af115801562009a2a573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562009a7c57600080fd5b505af115801562009a91573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b15801562009aed57600080fd5b505af115801562009b02573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c889362009b80939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562009b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009bc4919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa15801562009c25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009c4b919062010e5e565b925092509250600082828560405160200162009c6a9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a00092840192909252805190935060279162009cbf9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e599062009d0790899060040162010ec0565b600060405180830381600087803b15801562009d2257600080fd5b505af115801562009d37573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa15801562009d8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009db0919062010f19565b91505062009dcc816002811115620014d457620014d462010f4f565b871562009e4157601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d9262009e0c9291169060279060040162010fa2565b600060405180830381600087803b15801562009e2757600080fd5b505af115801562009e3c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562009e8f57600080fd5b505af115801562009ea4573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b15801562009efd57600080fd5b505af115801562009f12573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c889362009f90939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa15801562009fae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062009fd4919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200a016918590600401918252602082015260400190565b606060405180830381865afa1580156200a034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a05a919062010e5e565b60405192995090975095506200a07990879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200a0ce9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200a11690859060040162010ec0565b600060405180830381600087803b1580156200a13157600080fd5b505af11580156200a146573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200a196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a1bc919062010f19565b93506200a1d99050836002811115620014d457620014d462010f4f565b89156200a2bd5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200a23557600080fd5b505af11580156200a24a573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200a288929091169060279060040162010fa2565b600060405180830381600087803b1580156200a2a357600080fd5b505af11580156200a2b8573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200a30b57600080fd5b505af11580156200a320573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200a37957600080fd5b505af11580156200a38e573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200a3cc929091169060279060040162010fa2565b600060405180830381600087803b1580156200a3e757600080fd5b505af11580156200a3fc573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152600094508493509116906313e7c9d8906024016040805180830381865afa1580156200a451573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a477919062010f19565b915091506200a4b68160028111156200a494576200a49462010f4f565b60016040518060600160405280602181526020016201d0476021913962010775565b60395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200a50b57600080fd5b505af11580156200a520573d6000803e3d6000fd5b505060405163f28dceb360e01b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b60848201526000805160206201cf80833981519152925063f28dceb3915060a401600060405180830381600087803b1580156200a5ca57600080fd5b505af11580156200a5df573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200a61d9290911690602a9060040162010fa2565b600060405180830381600087803b1580156200a63857600080fd5b505af11580156200a64d573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200a69d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a6c3919062010f19565b90925090506200a7038160028111156200a6e1576200a6e162010f4f565b60006040518060600160405280602581526020016201d0226025913962010775565b601f54603854604051630ff26fd160e01b81526001600160a01b0391821660048201526000929190911690630ff26fd190602401602060405180830381865afa1580156200a755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200a77b91906201107e565b6037546040805160608101909152603c8082529293506200a7b29284926001600160a01b031691906201cfa06020830139620107b6565b5050505050505050505050505050565b60606011805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5783829060005260206000200180546200a8089062010f65565b80601f01602080910402602001604051908101604052809291908181526020018280546200a8369062010f65565b80156200a8875780601f106200a85b576101008083540402835291602001916200a887565b820191906000526020600020905b8154815290600101906020018083116200a86957829003601f168201915b5050505050815260200190600101906200a7e6565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200a96d57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200a92e5790505b505050505081525050815260200190600101906200a8c0565b6037546040516303223eab60e11b81526001600160a01b0390911660048201526000906000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200a9de57600080fd5b505af11580156200a9f3573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200aa71939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200aa8f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aab5919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200ab16573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ab3c919062010e5e565b92509250925060008282856040516020016200ab5b9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200abb09183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200abf890899060040162010ec0565b600060405180830381600087803b1580156200ac1357600080fd5b505af11580156200ac28573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200ac7b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aca1919062010f19565b9150506200acbd816002811115620014d457620014d462010f4f565b87156200ad3257601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200acfd9291169060279060040162010fa2565b600060405180830381600087803b1580156200ad1857600080fd5b505af11580156200ad2d573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200ad8057600080fd5b505af11580156200ad95573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200adee57600080fd5b505af11580156200ae03573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200ae81939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200ae9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200aec5919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200af07918590600401918252602082015260400190565b606060405180830381865afa1580156200af25573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200af4b919062010e5e565b60405192995090975095506200af6a90879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200afbf9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200b00790859060040162010ec0565b600060405180830381600087803b1580156200b02257600080fd5b505af11580156200b037573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200b087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b0ad919062010f19565b93506200b0ca9050836002811115620014d457620014d462010f4f565b89156200b1ae5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200b12657600080fd5b505af11580156200b13b573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200b179929091169060279060040162010fa2565b600060405180830381600087803b1580156200b19457600080fd5b505af11580156200b1a9573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b1fc57600080fd5b505af11580156200b211573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b26357600080fd5b505af11580156200b278573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200b2d157600080fd5b505af11580156200b2e6573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200b324929091169060279060040162010fa2565b600060405180830381600087803b1580156200b33f57600080fd5b505af11580156200a7b2573d6000803e3d6000fd5b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200b39c57600080fd5b505af11580156200b3b1573d6000803e3d6000fd5b5060009250600291506200b3c29050565b6040519080825280602002602001820160405280156200b3ec578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200b413576200b41362010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200b447576200b44762010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200b48690849060040162010a68565b600060405180830381600087803b1580156200b4a157600080fd5b505af11580156200b4b6573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b50857600080fd5b505af11580156200b51d573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200b57957600080fd5b505af11580156200b58e573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200b60c939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200b62a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b650919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200b6b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b6d7919062010e5e565b92509250925060008282856040516020016200b6f69392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200b74b9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200b79390899060040162010ec0565b600060405180830381600087803b1580156200b7ae57600080fd5b505af11580156200b7c3573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200b816573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200b83c919062010f19565b9150506200b858816002811115620014d457620014d462010f4f565b87156200b8cd57601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200b8989291169060279060040162010fa2565b600060405180830381600087803b1580156200b8b357600080fd5b505af11580156200b8c8573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200b91b57600080fd5b505af11580156200b930573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200b98957600080fd5b505af11580156200b99e573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200ba1c939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200ba3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ba60919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200baa2918590600401918252602082015260400190565b606060405180830381865afa1580156200bac0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bae6919062010e5e565b60405192995090975095506200bb0590879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200bb5a9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200bba290859060040162010ec0565b600060405180830381600087803b1580156200bbbd57600080fd5b505af11580156200bbd2573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200bc22573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bc48919062010f19565b93506200bc659050836002811115620014d457620014d462010f4f565b89156200bd495760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200bcc157600080fd5b505af11580156200bcd6573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200bd14929091169060279060040162010fa2565b600060405180830381600087803b1580156200bd2f57600080fd5b505af11580156200bd44573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200bd9757600080fd5b505af11580156200bdac573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200bdff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200be25919062010f19565b9150506200be41816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200be9657600080fd5b505af11580156200beab573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200bee9929091169060279060040162010fa2565b600060405180830381600087803b1580156200bf0457600080fd5b505af11580156200bf19573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200bf69573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200bf8f919062010f19565b91506200bfac905081600281111562001c2f5762001c2f62010f4f565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200bffa57600080fd5b505af11580156200c00f573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200c06857600080fd5b505af11580156200c07d573d6000803e3d6000fd5b5050601f546037546040516351b27a6d60e11b81526001600160a01b0391821660048201529116925063a364f4da9150602401600060405180830381600087803b1580156200c0cb57600080fd5b505af115801562007747573d6000803e3d6000fd5b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200c12857600080fd5b505af11580156200c13d573d6000803e3d6000fd5b5060009250600291506200c14e9050565b6040519080825280602002602001820160405280156200c178578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200c19f576200c19f62010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200c1d3576200c1d362010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200c21290849060040162010a68565b600060405180830381600087803b1580156200c22d57600080fd5b505af11580156200c242573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200c29457600080fd5b505af11580156200c2a9573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200c30557600080fd5b505af11580156200c31a573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200c398939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200c3b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c3dc919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200c43d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c463919062010e5e565b92509250925060008282856040516020016200c4829392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200c4d79183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200c51f90899060040162010ec0565b600060405180830381600087803b1580156200c53a57600080fd5b505af11580156200c54f573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200c5a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c5c8919062010f19565b9150506200c5e4816002811115620014d457620014d462010f4f565b87156200c65957601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200c6249291169060279060040162010fa2565b600060405180830381600087803b1580156200c63f57600080fd5b505af11580156200c654573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200c6a757600080fd5b505af11580156200c6bc573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200c71557600080fd5b505af11580156200c72a573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200c7a8939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200c7c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c7ec919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200c82e918590600401918252602082015260400190565b606060405180830381865afa1580156200c84c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c872919062010e5e565b60405192995090975095506200c89190879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200c8e69183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200c92e90859060040162010ec0565b600060405180830381600087803b1580156200c94957600080fd5b505af11580156200c95e573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200c9ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200c9d4919062010f19565b93506200c9f19050836002811115620014d457620014d462010f4f565b89156200cad55760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200ca4d57600080fd5b505af11580156200ca62573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200caa0929091169060279060040162010fa2565b600060405180830381600087803b1580156200cabb57600080fd5b505af11580156200cad0573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200cb2357600080fd5b505af11580156200cb38573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200cb8b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cbb1919062010f19565b9150506200cbcd816002811115620014d457620014d462010f4f565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200cc2257600080fd5b505af11580156200cc37573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200cc75929091169060279060040162010fa2565b600060405180830381600087803b1580156200cc9057600080fd5b505af11580156200cca5573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200ccf5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cd1b919062010f19565b91506200cd38905081600281111562001c2f5762001c2f62010f4f565b601f54603854604051630ff26fd160e01b81526001600160a01b0391821660048201526000929190911690630ff26fd190602401602060405180830381865afa1580156200cd8a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200cdb091906201107e565b6037549091506200cdcc9082906001600160a01b0316620104ed565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200ce1a57600080fd5b505af11580156200ce2f573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa7915060240162002c18565b60606010805480602002602001604051908101604052809291908181526020016000905b82821015620087cc5783829060005260206000200180546200ceb99062010f65565b80601f01602080910402602001604051908101604052809291908181526020018280546200cee79062010f65565b80156200cf385780601f106200cf0c576101008083540402835291602001916200cf38565b820191906000526020600020905b8154815290600101906020018083116200cf1a57829003601f168201915b5050505050815260200190600101906200ce97565b60008054610100900460ff16156200cf6e5750600054610100900460ff1690565b60006000805160206201cf808339815191523b156200d07357604080516000805160206201cf80833981519152602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200cff5917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016201153c565b60408051601f19818403018152908290526200d011916201143e565b6000604051808303816000865af19150503d80600081146200d050576040519150601f19603f3d011682016040523d82523d6000602084013e6200d055565b606091505b50915050808060200190518101906200d06f919062011311565b9150505b919050565b60408051600280825260608201909252600091816020015b60608152602001906001900390816200d0905750506040805160018082528183019092529192506000919060208083019080368337505060375482519293506001600160a01b0316918391506000906200d0ee576200d0ee62010e2e565b60200260200101906001600160a01b031690816001600160a01b03168152505080826000815181106200d125576200d12562010e2e565b60200260200101819052508082600181518110620063ad57620063ad62010e2e565b601f546030546040516366f17e7360e01b81526001600160a01b03928316926366f17e73926200d18292911690600090819060040162011335565b600060405180830381600087803b1580156200d19d57600080fd5b505af11580156200d1b2573d6000803e3d6000fd5b5050601f546031546040516366f17e7360e01b81526001600160a01b0392831694506366f17e7393506200d1f3929091169060009060019060040162011335565b600060405180830381600087803b1580156200d20e57600080fd5b505af11580156200d223573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b815260016004820152600093506001600160a01b03909116915063d574ea3d90602401602060405180830381865afa1580156200d274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d29a91906201107e565b6031549091506200d2b69082906001600160a01b0316620104ed565b60405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf808339815191529063491cc7c290608401600060405180830381600087803b1580156200d31457600080fd5b505af11580156200d329573d6000803e3d6000fd5b50506031546040516001600160a01b0390911692507f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea49150600090a2601f546031546040516302ea311d60e31b81526001600160a01b03918216600482015291169063175188e890602401600060405180830381600087803b1580156200d3af57600080fd5b505af11580156200d3c4573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d41657600080fd5b505af11580156200d42b573d6000803e3d6000fd5b5050601f5460405163d574ea3d60e01b8152600160048201526001600160a01b03909116925063d574ea3d9150602401602060405180830381865afa1580156200d479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d49f91906201107e565b5050565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d4f157600080fd5b505af11580156200d506573d6000803e3d6000fd5b5050601f546030546040516366f17e7360e01b81526001600160a01b0392831694506366f17e73935062000701929091169060009060649060040162011335565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200d58f57600080fd5b505af11580156200d5a4573d6000803e3d6000fd5b5060009250600291506200d5b59050565b6040519080825280602002602001820160405280156200d5df578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200d606576200d60662010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200d63a576200d63a62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200d67990849060040162010a68565b600060405180830381600087803b1580156200d69457600080fd5b505af11580156200d6a9573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200d6fb57600080fd5b505af11580156200d710573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200d76c57600080fd5b505af11580156200d781573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200d7ff939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200d81d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d843919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200d8a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200d8ca919062010e5e565b92509250925060008282856040516020016200d8e99392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200d93e9183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200d98690899060040162010ec0565b600060405180830381600087803b1580156200d9a157600080fd5b505af11580156200d9b6573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200da09573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200da2f919062010f19565b9150506200da4b816002811115620014d457620014d462010f4f565b87156200dac057601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200da8b9291169060279060040162010fa2565b600060405180830381600087803b1580156200daa657600080fd5b505af11580156200dabb573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200db0e57600080fd5b505af11580156200db23573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200db7c57600080fd5b505af11580156200db91573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200dc0f939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200dc2d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200dc53919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200dc95918590600401918252602082015260400190565b606060405180830381865afa1580156200dcb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200dcd9919062010e5e565b60405192995090975095506200dcf890879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200dd4d9183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200dd9590859060040162010ec0565b600060405180830381600087803b1580156200ddb057600080fd5b505af11580156200ddc5573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200de15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200de3b919062010f19565b93506200de589050836002811115620014d457620014d462010f4f565b89156200df3c5760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200deb457600080fd5b505af11580156200dec9573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200df07929091169060279060040162010fa2565b600060405180830381600087803b1580156200df2257600080fd5b505af11580156200df37573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200df8a57600080fd5b505af11580156200df9f573d6000803e3d6000fd5b5050601f546030546040516366f17e7360e01b81526001600160a01b0392831694506366f17e7393506200dfdf9290911690600090819060040162011335565b600060405180830381600087803b1580156200dffa57600080fd5b505af11580156200e00f573d6000803e3d6000fd5b505060405163248e63e160e11b8152600160048201819052602482018190526044820181905260648201526000805160206201cf80833981519152925063491cc7c29150608401600060405180830381600087803b1580156200e07157600080fd5b505af11580156200e086573d6000803e3d6000fd5b50506037546040516001600160a01b0390911692507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a260375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200e11757600080fd5b505af11580156200e12c573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200e16a929091169060279060040162010fa2565b600060405180830381600087803b1580156200e18557600080fd5b505af11580156200e19a573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200e1ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e213919062010f19565b91505062003ac881600281111562001c2f5762001c2f62010f4f565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200e27757600080fd5b505af11580156200e28c573d6000803e3d6000fd5b5060009250600291506200e29d9050565b6040519080825280602002602001820160405280156200e2c7578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200e2ee576200e2ee62010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200e322576200e32262010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200e36190849060040162010a68565b600060405180830381600087803b1580156200e37c57600080fd5b505af11580156200e391573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200e3e357600080fd5b505af11580156200e3f8573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200e45457600080fd5b505af11580156200e469573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200e4e7939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200e505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e52b919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200e58c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e5b2919062010e5e565b92509250925060008282856040516020016200e5d19392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200e6269183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200e66e90899060040162010ec0565b600060405180830381600087803b1580156200e68957600080fd5b505af11580156200e69e573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200e6f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e717919062010f19565b9150506200e733816002811115620014d457620014d462010f4f565b87156200e7a857601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200e7739291169060279060040162010fa2565b600060405180830381600087803b1580156200e78e57600080fd5b505af11580156200e7a3573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200e7f657600080fd5b505af11580156200e80b573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200e86457600080fd5b505af11580156200e879573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200e8f7939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200e915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e93b919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200e97d918590600401918252602082015260400190565b606060405180830381865afa1580156200e99b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200e9c1919062010e5e565b60405192995090975095506200e9e090879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200ea359183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200ea7d90859060040162010ec0565b600060405180830381600087803b1580156200ea9857600080fd5b505af11580156200eaad573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200eafd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200eb23919062010f19565b93506200eb409050836002811115620014d457620014d462010f4f565b89156200ec245760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200eb9c57600080fd5b505af11580156200ebb1573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200ebef929091169060279060040162010fa2565b600060405180830381600087803b1580156200ec0a57600080fd5b505af11580156200ec1f573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200ec7257600080fd5b505af11580156200ec87573d6000803e3d6000fd5b505060375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200ece057600080fd5b505af11580156200ecf5573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200ed33929091169060279060040162010fa2565b600060405180830381600087803b1580156200ed4e57600080fd5b505af11580156200ed63573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b039182166004820152600094508493509116906313e7c9d8906024016040805180830381865afa1580156200edb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200edde919062010f19565b915091506200edfb8160028111156200a494576200a49462010f4f565b50505050505050505050505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562003b30576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162003b11575050505050905090565b6040516303223eab60e11b81523060048201526000805160206201cf80833981519152906306447d5690602401600060405180830381600087803b1580156200eeb457600080fd5b505af11580156200eec9573d6000803e3d6000fd5b5060009250600291506200eeda9050565b6040519080825280602002602001820160405280156200ef04578160200160208202803683370190505b5060375481519192506001600160a01b03169082906000906200ef2b576200ef2b62010e2e565b6001600160a01b0392831660209182029290920101526039548251911690829060019081106200ef5f576200ef5f62010e2e565b6001600160a01b039283166020918202929092010152601f5460405163106edeff60e31b8152911690638376f7f8906200ef9e90849060040162010a68565b600060405180830381600087803b1580156200efb957600080fd5b505af11580156200efce573d6000803e3d6000fd5b505050506000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200f02057600080fd5b505af11580156200f035573d6000803e3d6000fd5b50506037546040516303223eab60e11b81526001600160a01b039091166004820152600092506000805160206201cf8083398151915291506306447d5690602401600060405180830381600087803b1580156200f09157600080fd5b505af11580156200f0a6573d6000803e3d6000fd5b5050604080516060810182526033546001600160a01b0390811680835260208301526000828401819052601c54603754601f549551631420c19160e31b815294975091955082169363a1060c88936200f124939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200f142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f168919062010e44565b603e546040516338d07aa960e21b8152600481019190915260248101829052909150600090819081906000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200f1c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f1ef919062010e5e565b92509250925060008282856040516020016200f20e9392919062010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a0009284019290925280519093506027916200f2639183918601906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200f2ab90899060040162010ec0565b600060405180830381600087803b1580156200f2c657600080fd5b505af11580156200f2db573d6000803e3d6000fd5b5050601f5460375460405163027cf93b60e31b81526001600160a01b03918216600482015260009450911691506313e7c9d8906024016040805180830381865afa1580156200f32e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f354919062010f19565b9150506200f370816002811115620014d457620014d462010f4f565b87156200f3e557601f54603854604051639926ee7d60e01b81526001600160a01b0392831692639926ee7d926200f3b09291169060279060040162010fa2565b600060405180830381600087803b1580156200f3cb57600080fd5b505af11580156200f3e0573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200f43357600080fd5b505af11580156200f448573d6000803e3d6000fd5b50506039546040516303223eab60e11b81526001600160a01b0390911660048201526000805160206201cf8083398151915292506306447d569150602401600060405180830381600087803b1580156200f4a157600080fd5b505af11580156200f4b6573d6000803e3d6000fd5b5050604080516060810182526034546001600160a01b0390811680835260208301526000828401819052601c54603954601f549551631420c19160e31b815294975091955082169363a1060c88936200f534939283169291909116906000805160206201d088833981519152906509184e72a0009060040162010c5e565b602060405180830381865afa1580156200f552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f578919062010e44565b6040805490516338d07aa960e21b81529192506000805160206201cf808339815191529163e341eaa4916200f5ba918590600401918252602082015260400190565b606060405180830381865afa1580156200f5d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f5fe919062010e5e565b60405192995090975095506200f61d90879087908a9060200162010e9d565b60408051601f198184030181526060830182528083526000805160206201d0888339815191526020848101919091526509184e72a000928401929092528051909650602a916200f6729183918901906201097c565b5060208201516001820155604091820151600290910155601c549051630f589e5960e01b81526001600160a01b0390911690630f589e59906200f6ba90859060040162010ec0565b600060405180830381600087803b1580156200f6d557600080fd5b505af11580156200f6ea573d6000803e3d6000fd5b5050601f5460395460405163027cf93b60e31b81526001600160a01b039182166004820152911692506313e7c9d891506024016040805180830381865afa1580156200f73a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f760919062010f19565b93506200f77d9050836002811115620014d457620014d462010f4f565b89156200f8615760375460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200f7d957600080fd5b505af11580156200f7ee573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200f82c929091169060279060040162010fa2565b600060405180830381600087803b1580156200f84757600080fd5b505af11580156200f85c573d6000803e3d6000fd5b505050505b6000805160206201d06883398151915260001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200f8af57600080fd5b505af11580156200f8c4573d6000803e3d6000fd5b505050506000604051806101000160405280604051806040016040528060068152602001651d185cdad25960d21b8152508152602001306001600160a01b03168152602001306001600160a01b03168152602001600081526020016040518060200160405280600081525081526020016040518060400160405280600a81526020016974657374506f6c69637960b01b8152508152602001600163ffffffff1681526020014360646200f97891906201118e565b9052601f546040516325254a3f60e21b81529192506000916001600160a01b039091169063949528fc906200f9b29085906004016201126d565b602060405180830381865afa1580156200f9d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200f9f6919062010e44565b60375460405163ca669fa760e01b81526001600160a01b0390911660048201529091506000805160206201cf808339815191529063ca669fa790602401600060405180830381600087803b1580156200fa4e57600080fd5b505af11580156200fa63573d6000803e3d6000fd5b5050601f54603854604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200faa1929091169060279060040162010fa2565b600060405180830381600087803b1580156200fabc57600080fd5b505af11580156200fad1573d6000803e3d6000fd5b505060395460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156200fb2a57600080fd5b505af11580156200fb3f573d6000803e3d6000fd5b5050601f54603a54604051639926ee7d60e01b81526001600160a01b039283169450639926ee7d93506200fb7d9290911690602a9060040162010fa2565b600060405180830381600087803b1580156200fb9857600080fd5b505af11580156200fbad573d6000803e3d6000fd5b5050603f546040516338d07aa960e21b81526000935083925082916000805160206201cf808339815191529163e341eaa4916200fbf7918890600401918252602082015260400190565b606060405180830381865afa1580156200fc15573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200fc3b919062010e5e565b92509250925060008282856040516020016200fc5a9392919062010e9d565b60408051808303601f19018152908290526041546338d07aa960e21b835260048301526024820187905291506000805160206201cf808339815191529063e341eaa490604401606060405180830381865afa1580156200fcbe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200fce4919062010e5e565b60405192965090945092506000906200fd069085908590889060200162010e9d565b60408051601f198184030181526002808452606084018352909350600092916020830190803683375050604080516002808252606082019092529293506000929150602082015b60608152602001906001900390816200fd4d575050603a546038549192506001600160a01b03908116911610156200fe425760385482516001600160a01b039091169083906000906200fda4576200fda462010e2e565b6001600160a01b039283166020918202929092010152603a548351911690839060019081106200fdd8576200fdd862010e2e565b60200260200101906001600160a01b031690816001600160a01b03168152505083816000815181106200fe0f576200fe0f62010e2e565b602002602001018190525082816001815181106200fe31576200fe3162010e2e565b60200260200101819052506200ff00565b603a5482516001600160a01b039091169083906000906200fe67576200fe6762010e2e565b6001600160a01b0392831660209182029290920101526038548351911690839060019081106200fe9b576200fe9b62010e2e565b60200260200101906001600160a01b031690816001600160a01b03168152505082816000815181106200fed2576200fed262010e2e565b602002602001018190525083816001815181106200fef4576200fef462010e2e565b60200260200101819052505b601f546040516318cea58d60e01b81526000916001600160a01b0316906318cea58d906200ff37908d908790879060040162011282565b6020604051808303816000875af11580156200ff57573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200ff7d919062011311565b90506200ffc0816040518060400160405280601e81526020017f466972737420657865637574696f6e2073686f756c6420737563636565640000815250620106da565b6000826000815181106200ffd8576200ffd862010e2e565b60200260200101519050826001815181106200fff8576200fff862010e2e565b60200260200101518360008151811062010016576201001662010e2e565b6020026020010181905250808360018151811062010038576201003862010e2e565b60200260200101819052506000846001815181106201005b576201005b62010e2e565b60200260200101518560008151811062010079576201007962010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250508085600181518110620100b057620100b062010e2e565b60200260200101906001600160a01b031690816001600160a01b0316815250506000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156201011e57600080fd5b505af115801562010133573d6000803e3d6000fd5b5050601f546040516318cea58d60e01b81526001600160a01b0390911692506318cea58d91506201016d908f908990899060040162011282565b6020604051808303816000875af11580156201018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620101b3919062011311565b505050505050505050505050505050505050505050505050565b6000805160206201d06883398151915260001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156201021b57600080fd5b505af115801562010230573d6000803e3d6000fd5b5050602f5460405163ca669fa760e01b81526001600160a01b0390911660048201526000805160206201cf80833981519152925063ca669fa79150602401600060405180830381600087803b1580156201028957600080fd5b505af11580156201029e573d6000803e3d6000fd5b5050601f546030546040516366f17e7360e01b81526001600160a01b0392831694506366f17e739350620007019290911690600090819060040162011335565b60008082604051602001620102f491906201143e565b60408051808303601f190181529082905280516020909101206001625e79b760e01b031982526004820181905291506000805160206201cf808339815191529063ffa1864990602401602060405180830381865afa1580156201035b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906201038191906201107e565b6040516318caf8e360e31b81529092506000805160206201cf808339815191529063c657c71890620103ba90859087906004016201156f565b600060405180830381600087803b158015620103d557600080fd5b505af1158015620103ea573d6000803e3d6000fd5b50505050915091565b60006201040082620102de565b5092915050565b8082146200d49f576000805160206201cf60833981519152604051620104699060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e604082015261745d60f01b606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620104a291906201159d565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620104db9190620115d6565b60405180910390a16200d49f62010804565b806001600160a01b0316826001600160a01b0316146200d49f576000805160206201cf60833981519152604051620105649060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f826040516201059d919062011601565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620104db919062011646565b80604051602001620105e991906201143e565b60405160208183030381529060405280519060200120826040516020016201061291906201143e565b60405160208183030381529060405280519060200120146200d49f576000805160206201cf608339815191526040516201068a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472604082015263696e675d60e01b606082015260800190565b60405180910390a16000805160206201cfdc83398151915282604051620106b2919062011671565b60405180910390a16000805160206201cfdc83398151915281604051620104db9190620116b0565b816200d49f576000805160206201cfdc83398151915281604051620107009190620116db565b60405180910390a16200d49f825b8062003c4e576000805160206201cf60833981519152604051620107639060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162003c4e62010804565b818314620107b1576000805160206201cfdc833981519152816040516201079d9190620116db565b60405180910390a1620107b1838362010407565b505050565b816001600160a01b0316836001600160a01b031614620107b1576000805160206201cfdc83398151915281604051620107f09190620116db565b60405180910390a1620107b18383620104ed565b6000805160206201cf808339815191523b15620108fc57604080516000805160206201cf80833981519152602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526201089792916020016201153c565b60408051601f1981840301815290829052620108b3916201143e565b6000604051808303816000865af19150503d8060008114620108f2576040519150601f19603f3d011682016040523d82523d6000602084013e620108f7565b606091505b505050505b6000805461ff001916610100179055565b60df806201170d83390190565b61017980620117ec83390190565b610767806201196583390190565b615f0280620120cc83390190565b610deb8062017fce83390190565b6101788062018db983390190565b6137998062018f3183390190565b610896806201c6ca83390190565b8280546201098a9062010f65565b90600052602060002090601f016020900481019282620109ae5760008555620109f9565b82601f10620109c957805160ff1916838001178555620109f9565b82800160010185558215620109f9579182015b82811115620109f9578251825591602001919060010190620109dc565b5062010a0792915062010a0b565b5090565b5b8082111562010a07576000815560010162010a0c565b600081518084526020808501945080840160005b8381101562010a5d5781516001600160a01b03168752958201959082019060010162010a36565b509495945050505050565b60208152600062010a7d602083018462010a22565b9392505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562010b2c57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562010b165783516001600160e01b0319168252928b019260019290920191908b019062010aea565b50978a0197955050509187019160010162010aac565b50919998505050505050505050565b60005b8381101562010b5857818101518382015260200162010b3e565b83811115620007315750506000910152565b6000815180845262010b8481602086016020860162010b3b565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562010bf157603f1988860301845262010bde85835162010b6a565b9450928501929085019060010162010bbf565b5092979650505050505050565b60608152600062010c2a60608301600b81526a39b396b837b634b1bc969960a91b602082015260400190565b8281036020840152600c81526b73616d706c65506f6c69637960a01b60208201526040810191505082604083015292915050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60608152600062010cb260608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b60208152600062010e1260208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121562010e5757600080fd5b5051919050565b60008060006060848603121562010e7457600080fd5b835160ff8116811462010e8657600080fd5b602085015160409095015190969495509392505050565b928352602083019190915260f81b6001600160f81b031916604082015260410190565b81516001600160a01b0390811682526020808401519091169082015260409182015163ffffffff1691810191909152608060608201819052600c908201526b6d657461646174612075726960a01b60a082015260c00190565b6000806040838503121562010f2d57600080fd5b8251915060208301516003811062010f4457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062010f7a57607f821691505b6020821081141562010f9c57634e487b7160e01b600052602260045260246000fd5b50919050565b60018060a01b038316815260006020604081840152606060408401526000845481600182811c91508083168062010fda57607f831692505b85831081141562010ff957634e487b7160e01b85526022600452602485fd5b60a0880183905260c088018180156201101b57600181146201102d576201105a565b60ff198616825287820196506201105a565b60008b81526020902060005b86811015620110545781548482015290850190890162011039565b83019750505b50505087015460608701525050600290940154608090930192909252509092915050565b6000602082840312156201109157600080fd5b81516001600160a01b038116811462010a7d57600080fd5b60208152600062010e1260208301600b81526a39b396b837b634b1bc969960a91b602082015260400190565b600060208284031215620110e857600080fd5b815167ffffffffffffffff808211156201110157600080fd5b818401915084601f8301126201111657600080fd5b8151818111156201112b576201112b62010e18565b604051601f8201601f19908116603f0116810190838211818310171562011156576201115662010e18565b816040528281528760208487010111156201117057600080fd5b6201118383602083016020880162010b3b565b979650505050505050565b60008219821115620111b057634e487b7160e01b600052601160045260246000fd5b500190565b60006101008251818552620111cd8286018262010b6a565b91505060018060a01b0360208401511660208501526040830151620111fd60408601826001600160a01b03169052565b50606083015160608501526080830151848203608086015262011221828262010b6a565b91505060a083015184820360a08601526201123d828262010b6a565b91505060c08301516201125860c086018263ffffffff169052565b5060e083015160e08501528091505092915050565b60208152600062010a7d6020830184620111b5565b606081526000620112976060830186620111b5565b602083820381850152620112ac828762010a22565b915083820360408501528185518084528284019150828160051b85010183880160005b838110156201130157601f19878403018552620112ee83835162010b6a565b94860194925090850190600101620112cf565b50909a9950505050505050505050565b6000602082840312156201132457600080fd5b8151801515811462010a7d57600080fd5b6001600160a01b0393909316835260ff919091166020830152604082015260600190565b805160208201516001600160f81b03198082169291906001831015620113895780818460010360031b1b83161693505b505050919050565b6000604082016040835280855180835260608501915060608160051b860101925060208088016000805b848110156201141c57888703605f19018652825180518089529085019085890190845b81811015620114055783516001600160a01b031683529287019291870191600101620113de565b5090985050509483019491830191600101620113bb565b5050508584038187015250505062011435818562010b6a565b95945050505050565b600082516201145281846020870162010b3b565b9190910192915050565b81516000908290602080860184805b84811015620114ba5782518051908501908790845b81811015620114a75783516001600160a01b03168352928701929187019160010162011480565b509097505050918301916001016201146b565b5093979650505050505050565b604081526000620114ec60408301600481526339b3af9960e11b602082015260400190565b828103602093840152600c81526b73616d706c65436f6e66696760a01b928101929092525060400190565b60208152600062010e1260208301600481526339b3af9960e11b602082015260400190565b6001600160e01b03198316815281516000906201156181600485016020870162010b3b565b919091016004019392505050565b6001600160a01b0383168152604060208201819052600090620115959083018462010b6a565b949350505050565b604081526000620115c860408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b604081526000620115c860408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006201162c60408301600a8152690808080808081319599d60b21b602082015260400190565b6001600160a01b0393909316602092909201919091525090565b6040815260006201162c60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006201169c60408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262011595818562010b6a565b6040815260006201169c60408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201526422b93937b960d91b606082015260806020820152600062010a7d608083018462010b6a56fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c003341304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f500000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d4f70657261746f724f6e65416c6961732073686f756c64207374696c6c206265206173736f6369617465642077697468206f70657261746f724f6e65280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583466972737420657865637574696f6e20697320657870656374656420746f20737563636565644f70657261746f722074776f2073686f756c64206e6f7420626520726567697374657265644f70657261746f72206f6e652073686f756c642062652072656769737465726564885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45a2646970667358221220a61eccf24154c6b0aa9dd9bf0457190cb8dcae298341f740a13595a3fea583ae64736f6c634300080c0033","sourceMap":"1096:20211:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:222;;;;;;;;;;;;;:::i;192:2146:114:-;;;;;;;;;;;;;:::i;4229:878:86:-;;;;;;;;;;;;;:::i;5871:748::-;;;;;;;;;;;;;:::i;2939:701::-;;;;;;;;;;;;;:::i;2161:134:26:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1726:243:86;;;;;;;;;;;;;:::i;17341:1973::-;;;;;;;;;;;;;:::i;7814:413::-;;;;;;;;;;;;;:::i;12133:1660::-;;;;;;;;;;;;;:::i;9399:513::-;;;;;;;;;;;;;:::i;2930:133:26:-;;;;;;;;;;;;;:::i;2631:141::-;;;;;;;;;;;;;:::i;6625:321:86:-;;;;;;;;;;;;;:::i;8233:1160::-;;;;;;;;;;;;;:::i;10479:1648::-;;;;;;;;;;;;;:::i;1975:217::-;;;;;;;;;;;;;:::i;2447:178:26:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1469:251:86:-;;;;;;;;;;;;;:::i;13799:1535::-;;;;;;;;;;;;;:::i;19320:1184::-;;;;;;;;;;;;;:::i;2301:140:26:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;;;;;;;;;;;:::i;20994:240:86:-;;;;;;;;;;;;;:::i;3646:577::-;;;;;;;;;;;;;:::i;5113:752::-;;;;;;;;;;;;;:::i;1866:141:26:-;;;;;;;;;;;;;:::i;1819:584:20:-;;;;;;;;;;;;;:::i;:::-;;;4094:14:120;;4087:22;4069:41;;4057:2;4042:18;1819:584:20;3929:187:120;9918:555:86;;;;;;;;;;;;;:::i;7279:529::-;;;;;;;;;;;;;:::i;7131:142::-;;;;;;;;;;;;;:::i;2426:507::-;;;;;;;;;;;;;:::i;20510:478::-;;;;;;;;;;;;;:::i;2013:142:26:-;;;;;;;;;;;;;:::i;15340:1995:86:-;;;;;;;;;;;;;:::i;6952:173::-;;;;;;;;;;;;;:::i;1572:26:20:-;;;;;;;;;;-1:-1:-1;1572:26:20;;;;;;;;2198:222:86;2254:14;;:61;;-1:-1:-1;;;2254:61:86;;-1:-1:-1;;;;;2254:14:86;;;;:27;;:61;;:14;;:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2325:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2352:14:86;;:61;;-1:-1:-1;;;2352:61:86;;-1:-1:-1;;;;;2352:14:86;;;;-1:-1:-1;2352:27:86;;-1:-1:-1;2352:61:86;;:14;;:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:222::o;192:2146:114:-;240:5;;226:20;;-1:-1:-1;;;226:20:114;;-1:-1:-1;;;;;240:5:114;;;226:20;;;5066:51:120;-1:-1:-1;;;;;;;;;;;226:13:114;;;5039:18:120;;226:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;256:15:114;:43;;-1:-1:-1;;;;;;256:43:114;-1:-1:-1;;;;;256:43:114;;;;;;;;;;327:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;309:15:114;:43;;-1:-1:-1;;;;;;309:43:114;-1:-1:-1;;;;;309:43:114;;;;;;407:5;;388:25;;407:5;;;388:25;;;:::i;:::-;-1:-1:-1;;;;;5084:32:120;;;5066:51;;5054:2;5039:18;388:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;363:22:114;:50;;-1:-1:-1;;;;;;363:50:114;-1:-1:-1;;;;;363:50:114;;;;;;503:15;;521:7;;538:15;;469:86;;503:15;;;;521:7;;;;538:15;;;469:86;;;:::i;:::-;-1:-1:-1;;;;;5386:15:120;;;5368:34;;5438:15;;;5433:2;5418:18;;5411:43;5490:15;;;5485:2;5470:18;;5463:43;5318:2;5303:18;469:86:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:31:114;:132;;-1:-1:-1;;;;;;423:132:114;-1:-1:-1;;;;;423:132:114;;;;;;;;;692:22;;628:88;;423:132;;692:22;;628:88;;;:::i;:::-;-1:-1:-1;;;;;5747:15:120;;;5729:34;;5799:15;;5794:2;5779:18;;5772:43;5679:2;5664:18;628:88:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:17:114;:162;;-1:-1:-1;;;;;;565:162:114;-1:-1:-1;;;;;565:162:114;;;;;;;;;797:14;;737:82;;-1:-1:-1;;;737:82:114;;565:162;;737:28;;:82;;774:4;;797:14;;-1:-1:-1;;;;737:82:114;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;830:13:114;:39;;-1:-1:-1;;;;;;830:39:114;-1:-1:-1;;;;;830:39:114;;;;;;920:5;;901:25;;920:5;;;901:25;;;:::i;:::-;-1:-1:-1;;;;;5084:32:120;;;5066:51;;5054:2;5039:18;901:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;879:19:114;:47;;-1:-1:-1;;;;;;879:47:114;-1:-1:-1;;;;;879:47:114;;;;;;;;;;967:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;936:28:114;:51;;-1:-1:-1;;;;;;936:51:114;-1:-1:-1;;;;;936:51:114;;;;;;;;;1110:19;;1049:82;;936:51;;1110:19;;1049:82;;;:::i;:::-;-1:-1:-1;;;;;5747:15:120;;;5729:34;;5799:15;;5794:2;5779:18;;5772:43;5679:2;5664:18;1049:82:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;997:14:114;:136;;-1:-1:-1;;;;;;997:136:114;-1:-1:-1;;;;;997:136:114;;;;;;;;;1209:10;;1241:17;;1281:13;;1143:263;;-1:-1:-1;;;1143:263:114;;1190:4;1143:263;;;6652:34:120;1209:10:114;;;6702:18:120;;;6695:43;1241:17:114;;;6754:18:120;;;6747:43;;;1281:13:114;;6806:18:120;;;6799:43;6858:19;;;6851:44;;;;-1:-1:-1;6911:19:120;;;6904:35;997:136:114;1143:25;;6586:19:120;;1143:263:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1416:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1441:28:114;;-1:-1:-1;;;1441:28:114;;1463:4;1441:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1441:13:114;-1:-1:-1;1441:13:114;;-1:-1:-1;5039:18:120;;1441:28:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1479:14:114;;:319;;-1:-1:-1;;;1479:319:114;;-1:-1:-1;;;;;1479:14:114;;;;-1:-1:-1;1479:27:114;;-1:-1:-1;1479:319:114;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1808:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1865:14:114;;1842:39;;-1:-1:-1;;;;;1865:14:114;;;;-1:-1:-1;1842:39:114;;-1:-1:-1;1842:39:114;:::i;:::-;-1:-1:-1;;;;;5084:32:120;;;5066:51;;5054:2;5039:18;1842:39:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1833:6:114;:48;;-1:-1:-1;;;;;;1833:48:114;-1:-1:-1;;;;;1833:48:114;;;;;;;;;1891:30;;-1:-1:-1;;;1891:30:114;;:16;;:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1972:6:114;;1931:22;:49;;-1:-1:-1;;;;;;1931:49:114;-1:-1:-1;;;;;1972:6:114;;;1931:49;;;;;;-1:-1:-1;;2021:29:114;;;;;;;;;;;;-1:-1:-1;;;2021:29:114;;;;;;:14;:29::i;:::-;2004:13;1990:60;1991:11;1990:60;;-1:-1:-1;;;;;;1990:60:114;-1:-1:-1;;;;;1990:60:114;;;;;;;;;;2101:34;;;;;;;;;;;;-1:-1:-1;;;2101:34:114;;;;;;:14;:34::i;:::-;2079:18;2060:75;2061:16;2060:75;;-1:-1:-1;;;;;;2060:75:114;-1:-1:-1;;;;;2060:75:114;;;;;;;;;;2176:29;;;;;;;;;;;;-1:-1:-1;;;2176:29:114;;;;;;:14;:29::i;:::-;2159:13;2145:60;;;2146:11;2145:60;;-1:-1:-1;;;;;;2145:60:114;-1:-1:-1;;;;;2145:60:114;;;;;;;;;;;2256:34;;;;;;;;;;;-1:-1:-1;;;2256:34:114;;;;;;:14;:34::i;:::-;2234:18;2215:75;2216:16;2215:75;;-1:-1:-1;;;;;;2215:75:114;-1:-1:-1;;;;;2215:75:114;;;;;;;;;;2311:20;;;;;;;;;;;;-1:-1:-1;;;2311:20:114;;;;;;:8;:20::i;:::-;2300:8;:31;;-1:-1:-1;;;;;;2300:31:114;-1:-1:-1;;;;;2300:31:114;;;;;;;;;;192:2146::o;4229:878:86:-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;4321:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;:::-;1262:1;1236:8;:28::i;:::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4352:11:86::2;::::0;4338:26:::2;::::0;-1:-1:-1;;;4338:26:86;;-1:-1:-1;;;;;4352:11:86;;::::2;4338:26;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;4338:13:86;-1:-1:-1;4338:13:86::2;::::0;-1:-1:-1;5039:18:120;;4338:26:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;4417:14:86::2;::::0;4442:11:::2;::::0;4417:37:::2;::::0;-1:-1:-1;;;4417:37:86;;-1:-1:-1;;;;;4442:11:86;;::::2;4417:37;::::0;::::2;5066:51:120::0;4377:36:86::2;::::0;-1:-1:-1;4417:14:86;::::2;::::0;-1:-1:-1;4417:24:86::2;::::0;5039:18:120;;4417:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4374:80;;;4464:28;4481:6;4473:15;;;;;;;;:::i;4464:28::-;4503:14;::::0;4540:16:::2;::::0;4503:73:::2;::::0;-1:-1:-1;;;4503:73:86;;-1:-1:-1;;;;;4503:14:86;;::::2;::::0;:36:::2;::::0;:73:::2;::::0;4540:16;::::2;::::0;4558:17:::2;::::0;4503:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;4600:14:86::2;::::0;4625:11:::2;::::0;4600:37:::2;::::0;-1:-1:-1;;;4600:37:86;;-1:-1:-1;;;;;4625:11:86;;::::2;4600:37;::::0;::::2;5066:51:120::0;4600:14:86;::::2;::::0;-1:-1:-1;4600:24:86::2;::::0;-1:-1:-1;5039:18:120;;4600:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4587:50:::0;-1:-1:-1;4647:28:86::2;::::0;-1:-1:-1;4587:50:86;4656:15:::2;::::0;::::2;;;;;;:::i;:::-;4673:1;4647:8;:28::i;:::-;4724:14;::::0;4760:16:::2;::::0;4724:53:::2;::::0;-1:-1:-1;;;4724:53:86;;-1:-1:-1;;;;;4760:16:86;;::::2;4724:53;::::0;::::2;5066:51:120::0;4686:35:86::2;::::0;4724:14;;;::::2;::::0;:35:::2;::::0;5039:18:120;;4724:53:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4825:11;::::0;4686:91;;-1:-1:-1;4787:50:86::2;::::0;4686:91;;-1:-1:-1;;;;;4825:11:86::2;4787:8;:50::i;:::-;4848:14;::::0;4889:16:::2;::::0;4907:8:::2;::::0;4848:68:::2;::::0;-1:-1:-1;;;4848:68:86;;-1:-1:-1;;;;;4889:16:86;;::::2;4848:68;::::0;::::2;5729:34:120::0;4907:8:86;;::::2;5779:18:120::0;;;5772:43;4848:14:86;::::2;::::0;:40:::2;::::0;5664:18:120;;4848:68:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;4968:14:86::2;::::0;5004:8:::2;::::0;4968:45:::2;::::0;-1:-1:-1;;;4968:45:86;;-1:-1:-1;;;;;5004:8:86;;::::2;4968:45;::::0;::::2;5066:51:120::0;4927:38:86::2;::::0;-1:-1:-1;4968:14:86;::::2;::::0;-1:-1:-1;4968:35:86::2;::::0;5039:18:120;;4968:45:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5064:11;::::0;4927:86;;-1:-1:-1;5023:53:86::2;::::0;4927:86;;-1:-1:-1;;;;;5064:11:86::2;5023:8;:53::i;:::-;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;5086:12:86::2;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4328:779;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;4229:878::o;5871:748::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;5971:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5997:11:86::2;::::0;5988:21:::2;::::0;-1:-1:-1;;;5988:21:86;;-1:-1:-1;;;;;5997:11:86;;::::2;5988:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;5988:8:86;-1:-1:-1;5988:8:86::2;::::0;-1:-1:-1;5039:18:120;;5988:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6019:14:86::2;::::0;6056:16:::2;::::0;6019:73:::2;::::0;-1:-1:-1;;;6019:73:86;;-1:-1:-1;;;;;6019:14:86;;::::2;::::0;-1:-1:-1;6019:36:86::2;::::0;-1:-1:-1;6019:73:86::2;::::0;6056:16;;::::2;::::0;6074:17:::2;::::0;6019:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6146:14:86::2;::::0;6171:11:::2;::::0;6146:37:::2;::::0;-1:-1:-1;;;6146:37:86;;-1:-1:-1;;;;;6171:11:86;;::::2;6146:37;::::0;::::2;5066:51:120::0;6106:36:86::2;::::0;-1:-1:-1;6146:14:86;::::2;::::0;-1:-1:-1;6146:24:86::2;::::0;5039:18:120;;6146:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6103:80;;;6193:28;6210:6;6202:15;;;;;;;;:::i;6193:28::-;6241:11;::::0;6232:21:::2;::::0;-1:-1:-1;;;6232:21:86;;-1:-1:-1;;;;;6241:11:86;;::::2;6232:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;6232:8:86;::::2;::::0;5039:18:120;;6232:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6263:14:86::2;::::0;6300:16:::2;::::0;6263:76:::2;::::0;-1:-1:-1;;;6263:76:86;;-1:-1:-1;;;;;6263:14:86;;::::2;::::0;-1:-1:-1;6263:36:86::2;::::0;-1:-1:-1;6263:76:86::2;::::0;6300:16;;::::2;::::0;6318:20:::2;::::0;6263:76:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6396:14:86::2;::::0;6421:11:::2;::::0;6396:37:::2;::::0;-1:-1:-1;;;6396:37:86;;-1:-1:-1;;;;;6421:11:86;;::::2;6396:37;::::0;::::2;5066:51:120::0;6353:39:86::2;::::0;-1:-1:-1;6396:14:86;::::2;::::0;-1:-1:-1;6396:24:86::2;::::0;5039:18:120;;6396:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6350:83;;;6443:31;6460:9;6452:18;;;;;;;;:::i;6443:31::-;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;6485:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6521:11:86::2;::::0;6512:21:::2;::::0;-1:-1:-1;;;6512:21:86;;-1:-1:-1;;;;;6521:11:86;;::::2;6512:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;6512:8:86;-1:-1:-1;6512:8:86::2;::::0;-1:-1:-1;5039:18:120;;6512:21:86::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6544:14:86::2;::::0;6585:16:::2;::::0;6603:8:::2;::::0;6544:68:::2;::::0;-1:-1:-1;;;6544:68:86;;-1:-1:-1;;;;;6585:16:86;;::::2;6544:68;::::0;::::2;5729:34:120::0;6603:8:86;;::::2;5779:18:120::0;;;5772:43;6544:14:86;::::2;::::0;-1:-1:-1;6544:40:86::2;::::0;-1:-1:-1;5664:18:120;;6544:68:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;5978:641;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;5871:748::o;2939:701::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;3031:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3091:14:86::2;::::0;3116:11:::2;::::0;3091:37:::2;::::0;-1:-1:-1;;;3091:37:86;;-1:-1:-1;;;;;3116:11:86;;::::2;3091:37;::::0;::::2;5066:51:120::0;3051:36:86::2;::::0;-1:-1:-1;3091:14:86;::::2;::::0;-1:-1:-1;3091:24:86::2;::::0;5039:18:120;;3091:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3048:80;;;3138:28;3155:6;3147:15;;;;;;;;:::i;3138:28::-;3186:11;::::0;3177:21:::2;::::0;-1:-1:-1;;;3177:21:86;;-1:-1:-1;;;;;3186:11:86;;::::2;3177:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;3177:8:86;::::2;::::0;5039:18:120;;3177:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;3208:14:86::2;::::0;3245:16:::2;::::0;3208:73:::2;::::0;-1:-1:-1;;;3208:73:86;;-1:-1:-1;;;;;3208:14:86;;::::2;::::0;-1:-1:-1;3208:36:86::2;::::0;-1:-1:-1;3208:73:86::2;::::0;3245:16;;::::2;::::0;3263:17:::2;::::0;3208:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;3305:14:86::2;::::0;3330:11:::2;::::0;3305:37:::2;::::0;-1:-1:-1;;;3305:37:86;;-1:-1:-1;;;;;3330:11:86;;::::2;3305:37;::::0;::::2;5066:51:120::0;3305:14:86;::::2;::::0;-1:-1:-1;3305:24:86::2;::::0;-1:-1:-1;5039:18:120;;3305:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3292:50:::0;-1:-1:-1;3352:28:86::2;::::0;-1:-1:-1;3292:50:86;3361:15:::2;::::0;::::2;;;;;;:::i;3352:28::-;3391:37;::::0;-1:-1:-1;;;3391:37:86;;3405:4:::2;3391:37;::::0;::::2;14458:41:120::0;;;14515:18;;;14508:50;;;14574:18;;;14567:50;;;14633:18;;;14626:50;-1:-1:-1;;;;;;;;;;;3391:13:86;::::2;::::0;14430:19:120;;3391:37:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;3459:11:86::2;::::0;3443:28:::2;::::0;-1:-1:-1;;;;;3459:11:86;;::::2;::::0;-1:-1:-1;3443:28:86::2;::::0;-1:-1:-1;3459:11:86::2;::::0;3443:28:::2;3482:14;::::0;3523:11:::2;::::0;3482:53:::2;::::0;-1:-1:-1;;;3482:53:86;;-1:-1:-1;;;;;3523:11:86;;::::2;3482:53;::::0;::::2;5066:51:120::0;3482:14:86;::::2;::::0;:40:::2;::::0;5039:18:120;;3482:53:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;3558:14:86::2;::::0;3583:11:::2;::::0;3558:37:::2;::::0;-1:-1:-1;;;3558:37:86;;-1:-1:-1;;;;;3583:11:86;;::::2;3558:37;::::0;::::2;5066:51:120::0;3558:14:86;::::2;::::0;-1:-1:-1;3558:24:86::2;::::0;-1:-1:-1;5039:18:120;;3558:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3545:50:::0;-1:-1:-1;3605:28:86::2;::::0;-1:-1:-1;3545:50:86;3614:15:::2;::::0;::::2;;;;;;:::i;:::-;3631:1;3605:8;:28::i;:::-;3038:602;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;2939:701::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;1726:243:86:-;1774:14;;:61;;-1:-1:-1;;;1774:61:86;;-1:-1:-1;;;;;1774:14:86;;;;:27;;:61;;:14;;:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1874:14:86;;:40;;-1:-1:-1;;;1874:40:86;;1845:26;;-1:-1:-1;;;;;;1874:14:86;;;;-1:-1:-1;1874:25:86;;:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1874:40:86;;;;;;;;;;;;:::i;:::-;1845:69;;1924:38;1933:12;1924:38;;;;;;;;;;;;;-1:-1:-1;;;1924:38:86;;;:8;:38::i;:::-;1764:205;1726:243::o;17341:1973::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;17489:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17510:16:86::2;17529:302;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;17529:302:86::2;;::::0;::::2;;;;17597:4;-1:-1:-1::0;;;;;17529:302:86::2;;;;;17632:4;-1:-1:-1::0;;;;;17529:302:86::2;;;;;17658:1;17529:302;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;17529:302:86::2;;::::0;::::2;;;;17766:1;17529:302;;;;;;17802:12;17817:3;17802:18;;;;:::i;:::-;17529:302:::0;;17863:14:::2;::::0;:39:::2;::::0;-1:-1:-1;;;17863:39:86;;17510:321;;-1:-1:-1;17842:18:86::2;::::0;-1:-1:-1;;;;;17863:14:86;;::::2;::::0;:33:::2;::::0;:39:::2;::::0;17510:321;;17863:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17922:11;::::0;17913:21:::2;::::0;-1:-1:-1;;;17913:21:86;;-1:-1:-1;;;;;17922:11:86;;::::2;17913:21;::::0;::::2;5066:51:120::0;17842:60:86;;-1:-1:-1;;;;;;;;;;;;17913:8:86;::::2;::::0;5039:18:120;;17913:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;17944:14:86::2;::::0;17981:16:::2;::::0;17944:73:::2;::::0;-1:-1:-1;;;17944:73:86;;-1:-1:-1;;;;;17944:14:86;;::::2;::::0;-1:-1:-1;17944:36:86::2;::::0;-1:-1:-1;17944:73:86::2;::::0;17981:16;;::::2;::::0;17999:17:::2;::::0;17944:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;18037:11:86::2;::::0;18028:21:::2;::::0;-1:-1:-1;;;18028:21:86;;-1:-1:-1;;;;;18037:11:86;;::::2;18028:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;18028:8:86;-1:-1:-1;18028:8:86::2;::::0;-1:-1:-1;5039:18:120;;18028:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;18059:14:86::2;::::0;18096:16:::2;::::0;18059:76:::2;::::0;-1:-1:-1;;;18059:76:86;;-1:-1:-1;;;;;18059:14:86;;::::2;::::0;-1:-1:-1;18059:36:86::2;::::0;-1:-1:-1;18059:76:86::2;::::0;18096:16;;::::2;::::0;18114:20:::2;::::0;18059:76:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;18188:18:86::2;::::0;18180:39:::2;::::0;-1:-1:-1;;;18180:39:86;;18147:7:::2;::::0;-1:-1:-1;18147:7:86;;-1:-1:-1;18147:7:86;;-1:-1:-1;;;;;;;;;;;18180:7:86;::::2;::::0;:39:::2;::::0;18208:10;;18180:39:::2;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;18180:39:86::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18146:73;;;;;;18229:25;18274:1;18277;18280;18257:25;;;;;;;;;;:::i;:::-;;::::0;;;;::::2;-1:-1:-1::0;;18257:25:86;;;;;;;18313:18:::2;::::0;-1:-1:-1;;;18305:39:86;;::::2;::::0;::::2;9826:25:120::0;9867:18;;;9860:34;;;18257:25:86;-1:-1:-1;;;;;;;;;;;;18305:7:86;::::2;::::0;9799:18:120;;18305:39:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18382:25;::::0;18293:51;;-1:-1:-1;18293:51:86;;-1:-1:-1;18293:51:86;-1:-1:-1;18354:25:86::2;::::0;18382::::2;::::0;18293:51;;;;;;18382:25:::2;;;:::i;:::-;;::::0;;-1:-1:-1;;18382:25:86;;::::2;::::0;;;18459:1:::2;18445:16:::0;;;;;::::2;::::0;;18382:25;;-1:-1:-1;18418:24:86::2;::::0;18382:25;18445:16:::2;::::0;::::2;::::0;18382:25;18445:16:::2;::::0;::::2;-1:-1:-1::0;;18499:14:86::2;::::0;;18511:1:::2;18499:14:::0;;;;;::::2;::::0;;;18418:43;;-1:-1:-1;18471:25:86::2;::::0;18499:14;-1:-1:-1;18499:14:86::2;::::0;::::2;;;;;;;;;;;;;;;-1:-1:-1::0;;18547:16:86::2;::::0;18528::::2;::::0;18471:42;;-1:-1:-1;;;;;;18547:16:86;;::::2;18528::::0;::::2;:35;18524:409;;;18592:16;::::0;18579:10;;-1:-1:-1;;;;;18592:16:86;;::::2;::::0;18579:7;;18592:16:::2;::::0;18579:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;18579:29:86;;::::2;:10;::::0;;::::2;::::0;;;;;:29;18635:16:::2;::::0;18622:10;;18635:16;::::2;::::0;18622:7;;18635:16;;18622:10;::::2;;;;;:::i;:::-;;;;;;:29;-1:-1:-1::0;;;;;18622:29:86::2;;;-1:-1:-1::0;;;;;18622:29:86::2;;;::::0;::::2;18681:12;18665:10;18676:1;18665:13;;;;;;;;:::i;:::-;;;;;;:28;;;;18723:12;18707:10;18718:1;18707:13;;;;;;;;:::i;:::-;;;;;;:28;;;;18524:409;;;18779:16;::::0;18766:10;;-1:-1:-1;;;;;18779:16:86;;::::2;::::0;18766:7;;18779:16:::2;::::0;18766:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;18766:29:86;;::::2;:10;::::0;;::::2;::::0;;;;;:29;18822:16:::2;::::0;18809:10;;18822:16;::::2;::::0;18809:7;;18822:16;;18809:10;::::2;;;;;:::i;:::-;;;;;;:29;-1:-1:-1::0;;;;;18809:29:86::2;;;-1:-1:-1::0;;;;;18809:29:86::2;;;::::0;::::2;18868:12;18852:10;18863:1;18852:13;;;;;;;;:::i;:::-;;;;;;:28;;;;18910:12;18894:10;18905:1;18894:13;;;;;;;;:::i;:::-;;;;;;:28;;;;18524:409;18943:14;::::0;:60:::2;::::0;-1:-1:-1;;;18943:60:86;;-1:-1:-1;;;;;18943:14:86;;::::2;::::0;:33:::2;::::0;:60:::2;::::0;18977:4;;18983:7;;18992:10;;18943:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19014:19;19036:10;19047:1;19036:13;;;;;;;;:::i;:::-;;;;;;;19014:35;;19075:10;19086:1;19075:13;;;;;;;;:::i;:::-;;;;;;;19059:10;19070:1;19059:13;;;;;;;;:::i;:::-;;;;;;:29;;;;19114:6;19098:10;19109:1;19098:13;;;;;;;;:::i;:::-;;;;;;:22;;;;19131:15;19169:7;19177:1;19169:10;;;;;;;;:::i;:::-;;;;;;;19156:7;19164:1;19156:10;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19156:23:86::2;;;-1:-1:-1::0;;;;;19156:23:86::2;;;::::0;::::2;19202:7;19189;19197:1;19189:10;;;;;;;;:::i;:::-;;;;;;:20;-1:-1:-1::0;;;;;19189:20:86::2;;;-1:-1:-1::0;;;;;19189:20:86::2;;;::::0;::::2;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;19220:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19247:14:86::2;::::0;:60:::2;::::0;-1:-1:-1;;;19247:60:86;;-1:-1:-1;;;;;19247:14:86;;::::2;::::0;-1:-1:-1;19247:33:86::2;::::0;-1:-1:-1;19247:60:86::2;::::0;19281:4;;19287:7;;19296:10;;19247:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17500:1814;;;;;;;;;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;17341:1973::o;7814:413::-;7877:14;;7904:15;;7877:49;;-1:-1:-1;;;7877:49:86;;-1:-1:-1;;;;;7877:14:86;;;;:26;;:49;;7904:15;;;7877:14;;;;:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7936:14:86;;7963:15;;7936:49;;-1:-1:-1;;;7936:49:86;;-1:-1:-1;;;;;7936:14:86;;;;-1:-1:-1;7936:26:86;;-1:-1:-1;7936:49:86;;7963:15;;;;7936:14;;;;:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8024:14:86;;:28;;-1:-1:-1;;;8024:28:86;;:14;:28;;;19690:25:120;7996::86;;-1:-1:-1;;;;;;8024:14:86;;;;-1:-1:-1;8024:25:86;;19663:18:120;;8024:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8090:15;;7996:56;;-1:-1:-1;8062:44:86;;7996:56;;-1:-1:-1;;;;;8090:15:86;8062:8;:44::i;:::-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;8117:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8153:10:86;;8144:20;;-1:-1:-1;;;8144:20:86;;-1:-1:-1;;;;;8153:10:86;;;8144:20;;;5066:51:120;-1:-1:-1;;;;;;;;;;;8144:8:86;-1:-1:-1;8144:8:86;;-1:-1:-1;5039:18:120;;8144:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8174:14:86;;8204:15;;8174:46;;-1:-1:-1;;;8174:46:86;;-1:-1:-1;;;;;8204:15:86;;;8174:46;;;5066:51:120;8174:14:86;;;-1:-1:-1;8174:29:86;;-1:-1:-1;5039:18:120;;8174:46:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7867:360;7814:413::o;12133:1660::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;12225:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12242:16:86::2;12261:302;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;12261:302:86::2;;::::0;::::2;;;;12329:4;-1:-1:-1::0;;;;;12261:302:86::2;;;;;12364:4;-1:-1:-1::0;;;;;12261:302:86::2;;;;;12390:1;12261:302;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;12261:302:86::2;;::::0;::::2;;;;12498:1;12261:302;;;;;;12534:12;12549:3;12534:18;;;;:::i;:::-;12261:302:::0;;12595:14:::2;::::0;:39:::2;::::0;-1:-1:-1;;;12595:39:86;;12242:321;;-1:-1:-1;12574:18:86::2;::::0;-1:-1:-1;;;;;12595:14:86;;::::2;::::0;:33:::2;::::0;:39:::2;::::0;12242:321;;12595:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12687:11;::::0;12678:21:::2;::::0;-1:-1:-1;;;12678:21:86;;-1:-1:-1;;;;;12687:11:86;;::::2;12678:21;::::0;::::2;5066:51:120::0;12574:60:86;;-1:-1:-1;12645:22:86::2;::::0;-1:-1:-1;;;;;;;;;;;12678:8:86;::::2;::::0;5039:18:120;;12678:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;12709:14:86::2;::::0;12746:16:::2;::::0;12709:73:::2;::::0;-1:-1:-1;;;12709:73:86;;-1:-1:-1;;;;;12709:14:86;;::::2;::::0;-1:-1:-1;12709:36:86::2;::::0;-1:-1:-1;12709:73:86::2;::::0;12746:16;;::::2;::::0;12764:17:::2;::::0;12709:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;12835:18:86::2;::::0;12827:39:::2;::::0;-1:-1:-1;;;12827:39:86;;12794:7:::2;::::0;-1:-1:-1;12794:7:86;;-1:-1:-1;12794:7:86;;-1:-1:-1;;;;;;;;;;;12827:7:86;::::2;::::0;:39:::2;::::0;12855:10;;12827:39:::2;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;12827:39:86::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12793:73;;;;;;12905:1;12908;12911;12888:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;12888:25:86;;::::2;::::0;;;12965:1:::2;12951:16:::0;;;;;::::2;::::0;;;12888:25;-1:-1:-1;12924:24:86::2;::::0;12888:25;12951:16:::2;::::0;;::::2;::::0;;::::2;::::0;::::2;-1:-1:-1::0;;12990:16:86::2;::::0;12977:10;;;;-1:-1:-1;;;;;;12990:16:86::2;::::0;12977:10;;-1:-1:-1;12990:16:86::2;::::0;12977:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;12977:29:86;;;::::2;:10;::::0;;::::2;::::0;;;;;;;:29;13045:14:::2;::::0;;13057:1:::2;13045:14:::0;;;;;::::2;::::0;;;13017:25:::2;::::0;13045:14:::2;;;;;;;;;;;;;;;;;;;;13017:42;;13085:9;13069:10;13080:1;13069:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:25;13119:14:::2;::::0;:60:::2;::::0;-1:-1:-1;;;13119:60:86;;13105:11:::2;::::0;-1:-1:-1;;;;;13119:14:86::2;::::0;:33:::2;::::0;:60:::2;::::0;13153:4;;13159:7;;13168:10;;13119:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13105:74;;13189:60;13200:6;13189:60;;;;;;;;;;;;;;;;;:10;:60::i;:::-;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;13260:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;13287:14:86::2;::::0;:60:::2;::::0;-1:-1:-1;;;13287:60:86;;-1:-1:-1;;;;;13287:14:86;;::::2;::::0;-1:-1:-1;13287:33:86::2;::::0;-1:-1:-1;13287:60:86::2;::::0;13321:4;;13327:7;;13336:10;;13287:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13380:305:86::2;::::0;;;;;;;::::2;;::::0;::::2;::::0;;;-1:-1:-1;;;13380:305:86;;;;;;13451:4:::2;13380:305;::::0;;::::2;::::0;;;;;;;;;;13358:19:::2;13380:305:::0;;;;;;;;;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;::::2;::::0;;-1:-1:-1;;;13380:305:86;;::::2;::::0;;;;-1:-1:-1;13380:305:86;;;;;;13620:1:::2;-1:-1:-1::0;;;13380:305:86;-1:-1:-1;;;13656:18:86::2;:12;13671:3;13656:18;:::i;:::-;13380:305;;::::0;13358:327:::2;;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;13696:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;13723:14:86::2;::::0;:63:::2;::::0;-1:-1:-1;;;13723:63:86;;-1:-1:-1;;;;;13723:14:86;;::::2;::::0;-1:-1:-1;13723:33:86::2;::::0;-1:-1:-1;13723:63:86::2;::::0;13757:7;;13766;;13775:10;;13723:63:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12232:1561;;;;;;;;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;12133:1660::o;9399:513::-;9508:18;;;9524:1;9508:18;;;;;;;;;9468:37;;9508:18;;;;;;;;;;;;;;;;;-1:-1:-1;;9565:16:86;;;9579:1;9565:16;;;;;;;;;9468:58;;-1:-1:-1;9536:26:86;;9565:16;;;;;;;;;;-1:-1:-1;;9606:10:86;;9591:12;;;;-1:-1:-1;;;;;;9606:10:86;;9591:12;;-1:-1:-1;9606:10:86;;9591:12;;;;:::i;:::-;;;;;;:25;-1:-1:-1;;;;;9591:25:86;;;-1:-1:-1;;;;;9591:25:86;;;;;9650:9;9626:18;9645:1;9626:21;;;;;;;;:::i;:::-;;;;;;;;;;:33;9698:12;;;9708:1;9698:12;;;;;;;;;9669:26;;9698:12;;;;;;;;;;-1:-1:-1;;9771:21:86;;;9734:1;9771:21;;;112:19:120;;;9669:41:86;;-1:-1:-1;155:14:120;9771:21:86;;;;;;;;;;;;9764:29;;;:::i;:::-;9745:13;9759:1;9745:16;;;;;;;;:::i;:::-;;;;:48;-1:-1:-1;;;;;9745:48:86;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;9804:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9831:14:86;;:74;;-1:-1:-1;;;9831:74:86;;-1:-1:-1;;;;;9831:14:86;;;;-1:-1:-1;9831:39:86;;-1:-1:-1;9831:74:86;;9871:18;;9891:13;;9831:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9458:454;;;;9399:513::o;2930:133:26:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;6625:321:86:-;6677:37;;-1:-1:-1;;;6677:37:86;;6691:4;6677:37;;;14458:41:120;;;14515:18;;;14508:50;;;14574:18;;;14567:50;;;14633:18;;;14626:50;-1:-1:-1;;;;;;;;;;;6677:13:86;;;14430:19:120;;6677:37:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6743:15:86;;6729:30;;-1:-1:-1;;;;;6743:15:86;;;;-1:-1:-1;6729:30:86;;-1:-1:-1;6743:15:86;;6729:30;6770:14;;6797:15;;6770:49;;-1:-1:-1;;;6770:49:86;;-1:-1:-1;;;;;6770:14:86;;;;:26;;:49;;6797:15;;;6770:14;;;;:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6857:14:86;;:28;;-1:-1:-1;;;6857:28:86;;6829:25;6857:28;;;19690:25:120;;;6829::86;-1:-1:-1;;;;;;6857:14:86;;;;-1:-1:-1;6857:25:86;;19663:18:120;;6857:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6923:15;;6829:56;;-1:-1:-1;6895:44:86;;6829:56;;-1:-1:-1;;;;;6923:15:86;6895:8;:44::i;8233:1160::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;8336:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8396:14:86::2;::::0;8421:11:::2;::::0;8396:37:::2;::::0;-1:-1:-1;;;8396:37:86;;-1:-1:-1;;;;;8421:11:86;;::::2;8396:37;::::0;::::2;5066:51:120::0;8356:36:86::2;::::0;-1:-1:-1;8396:14:86;::::2;::::0;-1:-1:-1;8396:24:86::2;::::0;5039:18:120;;8396:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8353:80;;;8443:28;8460:6;8452:15;;;;;;;;:::i;8443:28::-;8491:11;::::0;8482:21:::2;::::0;-1:-1:-1;;;8482:21:86;;-1:-1:-1;;;;;8491:11:86;;::::2;8482:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;8482:8:86;::::2;::::0;5039:18:120;;8482:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;8513:14:86::2;::::0;8550:16:::2;::::0;8513:73:::2;::::0;-1:-1:-1;;;8513:73:86;;-1:-1:-1;;;;;8513:14:86;;::::2;::::0;-1:-1:-1;8513:36:86::2;::::0;-1:-1:-1;8513:73:86::2;::::0;8550:16;;::::2;::::0;8568:17:::2;::::0;8513:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;8610:14:86::2;::::0;8635:11:::2;::::0;8610:37:::2;::::0;-1:-1:-1;;;8610:37:86;;-1:-1:-1;;;;;8635:11:86;;::::2;8610:37;::::0;::::2;5066:51:120::0;8610:14:86;::::2;::::0;-1:-1:-1;8610:24:86::2;::::0;-1:-1:-1;5039:18:120;;8610:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8597:50:::0;-1:-1:-1;8657:28:86::2;::::0;-1:-1:-1;8597:50:86;8666:15:::2;::::0;::::2;;;;;;:::i;8657:28::-;8696:14;::::0;8723:15:::2;::::0;8696:49:::2;::::0;-1:-1:-1;;;8696:49:86;;-1:-1:-1;;;;;8696:14:86;;::::2;::::0;:26:::2;::::0;:49:::2;::::0;8723:15;::::2;::::0;8696:14:::2;::::0;;;:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;8756:37:86::2;::::0;-1:-1:-1;8812:1:86::2;::::0;-1:-1:-1;8796:18:86::2;::::0;-1:-1:-1;8796:18:86;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;8853:16:86::2;::::0;;8867:1:::2;8853:16:::0;;;;;::::2;::::0;;;8756:58;;-1:-1:-1;8824:26:86::2;::::0;8853:16;::::2;::::0;;::::2;::::0;;::::2;::::0;::::2;-1:-1:-1::0;;8894:11:86::2;::::0;8879:12;;;;-1:-1:-1;;;;;;8894:11:86::2;::::0;8879:12;;-1:-1:-1;8894:11:86::2;::::0;8879:12:::2;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;8879:26:86::2;;;-1:-1:-1::0;;;;;8879:26:86::2;;;::::0;::::2;8939:9;8915:18;8934:1;8915:21;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:33;8987:12:::2;::::0;;8997:1:::2;8987:12:::0;;;;;::::2;::::0;;;8958:26:::2;::::0;8987:12:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;;9060:21:86::2;::::0;;9023:1:::2;9060:21;::::0;::::2;112:19:120::0;;;8958:41:86;;-1:-1:-1;155:14:120;9060:21:86::2;;;;;;;;;;;;9053:29;;;:::i;:::-;9034:13;9048:1;9034:16;;;;;;;;:::i;:::-;;;;:48;-1:-1:-1::0;;;;;9034:48:86::2;;;;;;;;-1:-1:-1::0;9093:37:86::2;::::0;-1:-1:-1;;;9093:37:86;;9107:4:::2;9093:37;::::0;::::2;14458:41:120::0;;;14515:18;;;14508:50;;;14574:18;;;14567:50;;;14633:18;;;14626:50;-1:-1:-1;;;;;;;;;;;9093:13:86;::::2;::::0;14430:19:120;;9093:37:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;9188:13;9145:57;;;;;;:::i;:::-;;;;;;;;9168:18;9145:57;;;;;;:::i;:::-;;::::0;;;;::::2;::::0;;;::::2;::::0;;;::::2;9213:14;::::0;:74:::2;::::0;-1:-1:-1;;;9213:74:86;;-1:-1:-1;;;;;9213:14:86;;::::2;::::0;:39:::2;::::0;:74:::2;::::0;9253:18;;9273:13;;9213:74:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;9311:14:86::2;::::0;9336:11:::2;::::0;9311:37:::2;::::0;-1:-1:-1;;;9311:37:86;;-1:-1:-1;;;;;9336:11:86;;::::2;9311:37;::::0;::::2;5066:51:120::0;9311:14:86;::::2;::::0;-1:-1:-1;9311:24:86::2;::::0;-1:-1:-1;5039:18:120;;9311:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9298:50:::0;-1:-1:-1;9358:28:86::2;::::0;-1:-1:-1;9298:50:86;9367:15:::2;::::0;::::2;;;;;;:::i;9358:28::-;8343:1050;;;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;8233:1160::o;10479:1648::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;10567:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10584:16:86::2;10603:302;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;10603:302:86::2;;::::0;::::2;;;;10671:4;-1:-1:-1::0;;;;;10603:302:86::2;;;;;10706:4;-1:-1:-1::0;;;;;10603:302:86::2;;;;;10732:1;10603:302;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;10603:302:86::2;;::::0;::::2;;;;10840:1;10603:302;;;;;;10876:12;10891:3;10876:18;;;;:::i;:::-;10603:302:::0;;10937:14:::2;::::0;:39:::2;::::0;-1:-1:-1;;;10937:39:86;;10584:321;;-1:-1:-1;10916:18:86::2;::::0;-1:-1:-1;;;;;10937:14:86;;::::2;::::0;:33:::2;::::0;:39:::2;::::0;10584:321;;10937:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11029:11;::::0;11020:21:::2;::::0;-1:-1:-1;;;11020:21:86;;-1:-1:-1;;;;;11029:11:86;;::::2;11020:21;::::0;::::2;5066:51:120::0;10916:60:86;;-1:-1:-1;10987:22:86::2;::::0;-1:-1:-1;;;;;;;;;;;11020:8:86;::::2;::::0;5039:18:120;;11020:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;11051:14:86::2;::::0;11088:16:::2;::::0;11051:73:::2;::::0;-1:-1:-1;;;11051:73:86;;-1:-1:-1;;;;;11051:14:86;;::::2;::::0;-1:-1:-1;11051:36:86::2;::::0;-1:-1:-1;11051:73:86::2;::::0;11088:16;;::::2;::::0;11106:17:::2;::::0;11051:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;11177:18:86::2;::::0;11169:39:::2;::::0;-1:-1:-1;;;11169:39:86;;11136:7:::2;::::0;-1:-1:-1;11136:7:86;;-1:-1:-1;11136:7:86;;-1:-1:-1;;;;;;;;;;;11169:7:86;::::2;::::0;:39:::2;::::0;11197:10;;11169:39:::2;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;11169:39:86::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11135:73;;;;;;11247:1;11250;11253;11230:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;11230:25:86;;::::2;::::0;;;11307:1:::2;11293:16:::0;;;;;::::2;::::0;;;11230:25;-1:-1:-1;11266:24:86::2;::::0;11230:25;11293:16:::2;::::0;;::::2;::::0;;::::2;::::0;::::2;-1:-1:-1::0;;11332:16:86::2;::::0;11319:10;;;;-1:-1:-1;;;;;;11332:16:86::2;::::0;11319:10;;-1:-1:-1;11332:16:86::2;::::0;11319:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;11319:29:86;;;::::2;:10;::::0;;::::2;::::0;;;;;;;:29;11387:14:::2;::::0;;11399:1:::2;11387:14:::0;;;;;::::2;::::0;;;11359:25:::2;::::0;11387:14:::2;;;;;;;;;;;;;;;;;;;;11359:42;;11427:9;11411:10;11422:1;11411:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:25;11461:14:::2;::::0;:60:::2;::::0;-1:-1:-1;;;11461:60:86;;11447:11:::2;::::0;-1:-1:-1;;;;;11461:14:86::2;::::0;:33:::2;::::0;:60:::2;::::0;11495:4;;11501:7;;11510:10;;11461:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11447:74;;11531:52;11542:6;11531:52;;;;;;;;;;;;;;;;::::0;:10:::2;:52::i;1975:217::-:0;2036:14;;:56;;-1:-1:-1;;;2036:56:86;;-1:-1:-1;;;;;2036:14:86;;;;:32;;:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2102:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2129:14:86;;:56;;-1:-1:-1;;;2129:56:86;;-1:-1:-1;;;;;2129:14:86;;;;-1:-1:-1;2129:32:86;;-1:-1:-1;2129:56:86;;;;;:::i;2447:178:26:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;1469:251:86:-;1522:14;;:56;;-1:-1:-1;;;1522:56:86;;-1:-1:-1;;;;;1522:14:86;;;;:32;;:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1622:14:86;;:38;;-1:-1:-1;;;1622:38:86;;1588:31;;-1:-1:-1;;;;;;1622:14:86;;;;-1:-1:-1;1622:30:86;;:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1622:38:86;;;;;;;;;;;;:::i;:::-;1588:72;;1670:43;1679:17;1670:43;;;;;;;;;;;;;-1:-1:-1;;;1670:43:86;;;:8;:43::i;13799:1535::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;13936:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13957:16:86::2;13976:302;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;13976:302:86::2;;::::0;::::2;;;;14044:4;-1:-1:-1::0;;;;;13976:302:86::2;;;;;14079:4;-1:-1:-1::0;;;;;13976:302:86::2;;;;;14105:1;13976:302;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;13976:302:86::2;;::::0;::::2;;;;14213:1;13976:302;;;;;;14249:12;14264:3;14249:18;;;;:::i;:::-;13976:302:::0;;14310:14:::2;::::0;:39:::2;::::0;-1:-1:-1;;;14310:39:86;;13957:321;;-1:-1:-1;14289:18:86::2;::::0;-1:-1:-1;;;;;14310:14:86;;::::2;::::0;:33:::2;::::0;:39:::2;::::0;13957:321;;14310:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14402:11;::::0;14393:21:::2;::::0;-1:-1:-1;;;14393:21:86;;-1:-1:-1;;;;;14402:11:86;;::::2;14393:21;::::0;::::2;5066:51:120::0;14289:60:86;;-1:-1:-1;14360:22:86::2;::::0;-1:-1:-1;;;;;;;;;;;14393:8:86;::::2;::::0;5039:18:120;;14393:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;14424:14:86::2;::::0;14461:16:::2;::::0;14424:73:::2;::::0;-1:-1:-1;;;14424:73:86;;-1:-1:-1;;;;;14424:14:86;;::::2;::::0;-1:-1:-1;14424:36:86::2;::::0;-1:-1:-1;14424:73:86::2;::::0;14461:16;;::::2;::::0;14479:17:::2;::::0;14424:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;14550:18:86::2;::::0;14542:39:::2;::::0;-1:-1:-1;;;14542:39:86;;14509:7:::2;::::0;-1:-1:-1;14509:7:86;;-1:-1:-1;14509:7:86;;-1:-1:-1;;;;;;;;;;;14542:7:86;::::2;::::0;:39:::2;::::0;14570:10;;14542:39:::2;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;14542:39:86::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14508:73;;;;;;14620:1;14623;14626;14603:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;14603:25:86;;::::2;::::0;;;14680:1:::2;14666:16:::0;;;;;::::2;::::0;;;14603:25;-1:-1:-1;14639:24:86::2;::::0;14603:25;14666:16:::2;::::0;;::::2;::::0;;::::2;::::0;::::2;-1:-1:-1::0;;14705:16:86::2;::::0;14692:10;;;;-1:-1:-1;;;;;;14705:16:86::2;::::0;14692:10;;-1:-1:-1;14705:16:86::2;::::0;14692:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;14692:29:86;;;::::2;:10;::::0;;::::2;::::0;;;;;;;:29;14760:14:::2;::::0;;14772:1:::2;14760:14:::0;;;;;::::2;::::0;;;14732:25:::2;::::0;14760:14:::2;;;;;;;;;;;;;;;;;;;;14732:42;;14800:9;14784:10;14795:1;14784:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;:25;;;;14842:305:::2;::::0;;;;;;;::::2;;::::0;::::2;::::0;;;-1:-1:-1;;;14842:305:86;;;;;;14913:4:::2;14842:305:::0;;::::2;::::0;;;;;;;14820:19:::2;14842:305:::0;;;;;;;;;;::::2;::::0;;;;;;;;;;;;;::::2;::::0;;;::::2;::::0;;-1:-1:-1;;;14842:305:86;;::::2;::::0;;;;-1:-1:-1;14842:305:86;;;;;;15082:1:::2;-1:-1:-1::0;;;14842:305:86;-1:-1:-1;;;15118:18:86::2;:12;15133:3;15118:18;:::i;:::-;14842:305:::0;;15169:14:::2;::::0;:42:::2;::::0;-1:-1:-1;;;15169:42:86;;14820:327;;-1:-1:-1;15158:68:86::2;::::0;15215:10;;-1:-1:-1;;;;;15169:14:86::2;::::0;:33:::2;::::0;:42:::2;::::0;14820:327;;15169:42:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;15158:10;:68::i;:::-;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;15237:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15264:14:86::2;::::0;:63:::2;::::0;-1:-1:-1;;;15264:63:86;;-1:-1:-1;;;;;15264:14:86;;::::2;::::0;-1:-1:-1;15264:33:86::2;::::0;-1:-1:-1;15264:63:86::2;::::0;15298:7;;15307;;15316:10;;15264:63:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13947:1387;;;;;;;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;13799:1535::o;19320:1184::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;19458:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;19488:11:86::2;::::0;19479:21:::2;::::0;-1:-1:-1;;;19479:21:86;;-1:-1:-1;;;;;19488:11:86;;::::2;19479:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;19479:8:86;-1:-1:-1;19479:8:86::2;::::0;-1:-1:-1;5039:18:120;;19479:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19510:14:86::2;::::0;19547:16:::2;::::0;19510:73:::2;::::0;-1:-1:-1;;;19510:73:86;;-1:-1:-1;;;;;19510:14:86;;::::2;::::0;-1:-1:-1;19510:36:86::2;::::0;-1:-1:-1;19510:73:86::2;::::0;19547:16;;::::2;::::0;19565:17:::2;::::0;19510:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19650:14:86::2;::::0;19675:11:::2;::::0;19650:37:::2;::::0;-1:-1:-1;;;19650:37:86;;-1:-1:-1;;;;;19675:11:86;;::::2;19650:37;::::0;::::2;5066:51:120::0;19595:13:86::2;::::0;-1:-1:-1;19595:13:86;;-1:-1:-1;19650:14:86;::::2;::::0;:24:::2;::::0;5039:18:120;;19650:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19594:93;;;;19697:135;19727:6;19719:15;;;;;;;;:::i;:::-;19744:40;19697:135;;;;;;;;;;;;;;;;;:8;:135::i;:::-;19852:11;::::0;19843:21:::2;::::0;-1:-1:-1;;;19843:21:86;;-1:-1:-1;;;;;19852:11:86;;::::2;19843:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;19843:8:86;::::2;::::0;5039:18:120;;19843:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19874:84:86::2;::::0;-1:-1:-1;;;19874:84:86;;24413:2:120;19874:84:86::2;::::0;::::2;24395:21:120::0;24452:2;24432:18;;;24425:30;24491:34;24471:18;;;24464:62;24562:34;24542:18;;;24535:62;-1:-1:-1;;;24613:19:120;;;24606:32;-1:-1:-1;;;;;;;;;;;19874:15:86;-1:-1:-1;19874:15:86::2;::::0;-1:-1:-1;24655:19:120;;19874:84:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19968:14:86::2;::::0;20005:16:::2;::::0;19968:76:::2;::::0;-1:-1:-1;;;19968:76:86;;-1:-1:-1;;;;;19968:14:86;;::::2;::::0;-1:-1:-1;19968:36:86::2;::::0;-1:-1:-1;19968:76:86::2;::::0;20005:16;;::::2;::::0;20023:20:::2;::::0;19968:76:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;20073:14:86::2;::::0;20098:11:::2;::::0;20073:37:::2;::::0;-1:-1:-1;;;20073:37:86;;-1:-1:-1;;;;;20098:11:86;;::::2;20073:37;::::0;::::2;5066:51:120::0;20073:14:86;::::2;::::0;-1:-1:-1;20073:24:86::2;::::0;-1:-1:-1;5039:18:120;;20073:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20055:55:::0;;-1:-1:-1;20055:55:86;-1:-1:-1;20120:169:86::2;20055:55:::0;20142:15:::2;::::0;::::2;;;;;;:::i;:::-;20179:46;20120:169;;;;;;;;;;;;;;;;;:8;:169::i;:::-;20329:14;::::0;20365:16:::2;::::0;20329:53:::2;::::0;-1:-1:-1;;;20329:53:86;;-1:-1:-1;;;;;20365:16:86;;::::2;20329:53;::::0;::::2;5066:51:120::0;20300:26:86::2;::::0;20329:14;;;::::2;::::0;:35:::2;::::0;5039:18:120;;20329:53:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20421:11;::::0;20392:105:::2;::::0;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;20300:82;;-1:-1:-1;20392:105:86::2;::::0;20300:82;;-1:-1:-1;;;;;20421:11:86::2;::::0;20392:105;::::2;;::::0;::::2;;:8;:105::i;:::-;19469:1035;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;19320:1184::o;2301:140:26:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20994:240:86;271:11:115;;257:26;;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;;257:26;;;5066:51:120;21079:5:86;;-1:-1:-1;;;;;;;;;;;257:13:115;;;5039:18:120;;257:26:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;353:177:115;;;;;;;;420:12;;-1:-1:-1;;;;;420:12:115;;;353:177;;;;;;;293:57;353:177;;;;;;563:17;;637:11;;658:14;;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;;;:60;;:158;;637:11;;;;658:14;;;;;-1:-1:-1;;;;;;;;;;;675:16:115;693:18;;563:158;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;;766:35;;-1:-1:-1;;;766:35:115;;;;;9826:25:120;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115;;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;;;9799:18:120;;766:35:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;836:25:115;;;;;;892:164;;;;;;;;-1:-1:-1;;;;;;;;;;;836:25:115;892:164;;;;;;;1027:18;892:164;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115;;:184;;:17;;:184;;;;:::i;:::-;-1:-1:-1;872:184:115;;;;;;;;;;;;;;;;;;1066:17;;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;;;:36;;:69;;1103:15;;1066:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1189:14:115;;1214:11;;1189:37;;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;;1189:37;;;5066:51:120;1149:36:115;;-1:-1:-1;1189:14:115;;;-1:-1:-1;1189:24:115;;5039:18:120;;1189:37:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;;1342:16;;1305:73;;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;;;:36;;:73;;1342:16;;;1360:17;;1305:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1274:115;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1398:12:115;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1437:11:115;;1423:26;;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;;1423:26;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115;;-1:-1:-1;5039:18:120;;1423:26:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1522:183:115;;;;;;;;1589:15;;-1:-1:-1;;;;;1589:15:115;;;1522:183;;;;;;;1459:60;1522:183;;;;;;1741:17;;1815:11;;1836:14;;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;;;:60;;:158;;1815:11;;;;1836:14;;;;;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18;;1741:158;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;;;:38;;1716:183;;1922:38;;9826:25:120;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115;;1910:50;;;;;;1982:25;;;:::i;:::-;;;;-1:-1:-1;;1982:25:115;;;;;;2041:164;;;;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115;2041:164;;;;;;;2176:18;2041:164;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115;;:187;;:20;;:187;;;;:::i;:::-;-1:-1:-1;2018:187:115;;;;;;;;;;;;;;;;;;2216:17;;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;;;:36;;:72;;2253:18;;2216:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2311:14:115;;2336:11;;2311:37;;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;;2311:37;;;5066:51:120;2311:14:115;;;-1:-1:-1;2311:24:115;;-1:-1:-1;5039:18:120;;2311:37:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50;-1:-1:-1;2358:28:115;;-1:-1:-1;2298:50:115;2367:15;;;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;;2427:21;;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;;2427:21;;;5066:51:120;-1:-1:-1;;;;;;;;;;;2427:8:115;;;5039:18:120;;2427:21:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2462:14:115;;2499:16;;2462:73;;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;;;-1:-1:-1;2462:36:115;;-1:-1:-1;2462:73:115;;2499:16;;;;2517:17;;2462:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2396:150;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;2555:12:115;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;21096:15:86::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21132:11:86::1;::::0;21123:21:::1;::::0;-1:-1:-1;;;21123:21:86;;-1:-1:-1;;;;;21132:11:86;;::::1;21123:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;21123:8:86;-1:-1:-1;21123:8:86::1;::::0;-1:-1:-1;5039:18:120;;21123:21:86::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21154:14:86::1;::::0;21191:16:::1;::::0;21154:73:::1;::::0;-1:-1:-1;;;21154:73:86;;-1:-1:-1;;;;;21154:14:86;;::::1;::::0;-1:-1:-1;21154:36:86::1;::::0;-1:-1:-1;21154:73:86::1;::::0;21191:16;;::::1;::::0;21209:17:::1;::::0;21154:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3646:577:::0;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;3746:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3806:14:86::2;::::0;3831:11:::2;::::0;3806:37:::2;::::0;-1:-1:-1;;;3806:37:86;;-1:-1:-1;;;;;3831:11:86;;::::2;3806:37;::::0;::::2;5066:51:120::0;3766:36:86::2;::::0;-1:-1:-1;3806:14:86;::::2;::::0;-1:-1:-1;3806:24:86::2;::::0;5039:18:120;;3806:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3763:80;;;3853:28;3870:6;3862:15;;;;;;;;:::i;3853:28::-;3901:11;::::0;3892:21:::2;::::0;-1:-1:-1;;;3892:21:86;;-1:-1:-1;;;;;3901:11:86;;::::2;3892:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;3892:8:86;::::2;::::0;5039:18:120;;3892:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;3923:14:86::2;::::0;3960:16:::2;::::0;3923:73:::2;::::0;-1:-1:-1;;;3923:73:86;;-1:-1:-1;;;;;3923:14:86;;::::2;::::0;-1:-1:-1;3923:36:86::2;::::0;-1:-1:-1;3923:73:86::2;::::0;3960:16;;::::2;::::0;3978:17:::2;::::0;3923:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;4020:14:86::2;::::0;4045:11:::2;::::0;4020:37:::2;::::0;-1:-1:-1;;;4020:37:86;;-1:-1:-1;;;;;4045:11:86;;::::2;4020:37;::::0;::::2;5066:51:120::0;4020:14:86;::::2;::::0;-1:-1:-1;4020:24:86::2;::::0;-1:-1:-1;5039:18:120;;4020:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4007:50:::0;-1:-1:-1;4067:28:86::2;::::0;-1:-1:-1;4007:50:86;4076:15:::2;::::0;::::2;;;;;;:::i;4067:28::-;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;4106:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;4142:10:86::2;::::0;4133:20:::2;::::0;-1:-1:-1;;;4133:20:86;;-1:-1:-1;;;;;4142:10:86;;::::2;4133:20;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;4133:8:86;-1:-1:-1;4133:8:86::2;::::0;-1:-1:-1;5039:18:120;;4133:20:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;4163:14:86::2;::::0;4204:11:::2;::::0;4163:53:::2;::::0;-1:-1:-1;;;4163:53:86;;-1:-1:-1;;;;;4204:11:86;;::::2;4163:53;::::0;::::2;5066:51:120::0;4163:14:86;::::2;::::0;-1:-1:-1;4163:40:86::2;::::0;-1:-1:-1;5039:18:120;;4163:53:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;5113:752:::0;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;5210:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5270:14:86::2;::::0;5295:11:::2;::::0;5270:37:::2;::::0;-1:-1:-1;;;5270:37:86;;-1:-1:-1;;;;;5295:11:86;;::::2;5270:37;::::0;::::2;5066:51:120::0;5230:36:86::2;::::0;-1:-1:-1;5270:14:86;::::2;::::0;-1:-1:-1;5270:24:86::2;::::0;5039:18:120;;5270:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5227:80;;;5317:28;5334:6;5326:15;;;;;;;;:::i;5317:28::-;5365:11;::::0;5356:21:::2;::::0;-1:-1:-1;;;5356:21:86;;-1:-1:-1;;;;;5365:11:86;;::::2;5356:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;5356:8:86;::::2;::::0;5039:18:120;;5356:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;5387:14:86::2;::::0;5424:16:::2;::::0;5387:73:::2;::::0;-1:-1:-1;;;5387:73:86;;-1:-1:-1;;;;;5387:14:86;;::::2;::::0;-1:-1:-1;5387:36:86::2;::::0;-1:-1:-1;5387:73:86::2;::::0;5424:16;;::::2;::::0;5442:17:::2;::::0;5387:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;5484:14:86::2;::::0;5509:11:::2;::::0;5484:37:::2;::::0;-1:-1:-1;;;5484:37:86;;-1:-1:-1;;;;;5509:11:86;;::::2;5484:37;::::0;::::2;5066:51:120::0;5484:14:86;::::2;::::0;-1:-1:-1;5484:24:86::2;::::0;-1:-1:-1;5039:18:120;;5484:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5471:50:::0;-1:-1:-1;5531:28:86::2;::::0;-1:-1:-1;5471:50:86;5540:15:::2;::::0;::::2;;;;;;:::i;5531:28::-;5608:14;::::0;5644:16:::2;::::0;5608:53:::2;::::0;-1:-1:-1;;;5608:53:86;;-1:-1:-1;;;;;5644:16:86;;::::2;5608:53;::::0;::::2;5066:51:120::0;5570:35:86::2;::::0;5608:14;;;::::2;::::0;:35:::2;::::0;5039:18:120;;5608:53:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5709:11;::::0;5570:91;;-1:-1:-1;5671:50:86::2;::::0;5570:91;;-1:-1:-1;;;;;5709:11:86::2;5671:8;:50::i;:::-;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;5732:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;5768:10:86::2;::::0;5759:20:::2;::::0;-1:-1:-1;;;5759:20:86;;-1:-1:-1;;;;;5768:10:86;;::::2;5759:20;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;5759:8:86;-1:-1:-1;5759:8:86::2;::::0;-1:-1:-1;5039:18:120;;5759:20:86::2;4920:203:120::0;1866:141:26;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;-1:-1:-1;;;;;;;;;;;2985:55:20;3066:16;1980:374;;2196:43;;;-1:-1:-1;;;;;;;;;;;2196:43:20;;;24859:51:120;;;-1:-1:-1;;;24926:18:120;;;24919:34;2196:43:20;;;;;;;;;24832:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;9918:555:86:-;10025:18;;;10041:1;10025:18;;;;;;;;;9985:37;;10025:18;;;;;;;;;;;;;;;;;-1:-1:-1;;10082:16:86;;;10096:1;10082:16;;;;;;;;;9985:58;;-1:-1:-1;10053:26:86;;10082:16;;;;;;;;;;-1:-1:-1;;10123:11:86;;10108:12;;;;-1:-1:-1;;;;;;10123:11:86;;10108:12;;-1:-1:-1;10123:11:86;;10108:12;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;10108:26:86;;;-1:-1:-1;;;;;10108:26:86;;;;;10168:9;10144:18;10163:1;10144:21;;;;;;;;:::i;:::-;;;;;;:33;;;;10211:9;10187:18;10206:1;10187:21;;;;;;;;:::i;7279:529::-;7334:14;;7361:15;;7334:49;;-1:-1:-1;;;7334:49:86;;-1:-1:-1;;;;;7334:14:86;;;;:26;;:49;;7361:15;;;7334:14;;;;:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7393:14:86;;7420:15;;7393:49;;-1:-1:-1;;;7393:49:86;;-1:-1:-1;;;;;7393:14:86;;;;-1:-1:-1;7393:26:86;;-1:-1:-1;7393:49:86;;7420:15;;;;7393:14;;;;:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7481:14:86;;:28;;-1:-1:-1;;;7481:28:86;;:14;:28;;;19690:25:120;7453::86;;-1:-1:-1;;;;;;7481:14:86;;;;-1:-1:-1;7481:25:86;;19663:18:120;;7481:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7547:15;;7453:56;;-1:-1:-1;7519:44:86;;7453:56;;-1:-1:-1;;;;;7547:15:86;7519:8;:44::i;:::-;7574:37;;-1:-1:-1;;;7574:37:86;;7588:4;7574:37;;;14458:41:120;;;14515:18;;;14508:50;;;14574:18;;;14567:50;;;14633:18;;;14626:50;-1:-1:-1;;;;;;;;;;;7574:13:86;;;14430:19:120;;7574:37:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7642:15:86;;7626:32;;-1:-1:-1;;;;;7642:15:86;;;;-1:-1:-1;7626:32:86;;-1:-1:-1;7642:15:86;;7626:32;7669:14;;7699:15;;7669:46;;-1:-1:-1;;;7669:46:86;;-1:-1:-1;;;;;7699:15:86;;;7669:46;;;5066:51:120;7669:14:86;;;:29;;5039:18:120;;7669:46:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;7726:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7773:14:86;;:28;;-1:-1:-1;;;7773:28:86;;:14;:28;;;19690:25:120;-1:-1:-1;;;;;7773:14:86;;;;-1:-1:-1;7773:25:86;;-1:-1:-1;19663:18:120;;7773:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;7279:529:86:o;7131:142::-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;7188:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7215:14:86;;7242:15;;7215:51;;-1:-1:-1;;;7215:51:86;;-1:-1:-1;;;;;7215:14:86;;;;-1:-1:-1;7215:26:86;;-1:-1:-1;7215:51:86;;7242:15;;;;7215:14;;7262:3;;7215:51;;;:::i;2426:507::-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;2523:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2540:14:86::2;::::0;2567:15:::2;::::0;2540:49:::2;::::0;-1:-1:-1;;;2540:49:86;;-1:-1:-1;;;;;2540:14:86;;::::2;::::0;-1:-1:-1;2540:26:86::2;::::0;-1:-1:-1;2540:49:86::2;::::0;2567:15;;::::2;::::0;2540:14:::2;::::0;;;:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2600:37:86::2;::::0;-1:-1:-1;;;2600:37:86;;2614:4:::2;2600:37;::::0;::::2;14458:41:120::0;;;14515:18;;;14508:50;;;14574:18;;;14567:50;;;14633:18;;;14626:50;-1:-1:-1;;;;;;;;;;;2600:13:86;-1:-1:-1;2600:13:86::2;::::0;-1:-1:-1;14430:19:120;;2600:37:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2671:11:86::2;::::0;2652:31:::2;::::0;-1:-1:-1;;;;;2671:11:86;;::::2;::::0;-1:-1:-1;2652:31:86::2;::::0;-1:-1:-1;2671:11:86::2;::::0;2652:31:::2;2702:11;::::0;2693:21:::2;::::0;-1:-1:-1;;;2693:21:86;;-1:-1:-1;;;;;2702:11:86;;::::2;2693:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2693:8:86;::::2;::::0;5039:18:120;;2693:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2724:14:86::2;::::0;2761:16:::2;::::0;2724:73:::2;::::0;-1:-1:-1;;;2724:73:86;;-1:-1:-1;;;;;2724:14:86;;::::2;::::0;-1:-1:-1;2724:36:86::2;::::0;-1:-1:-1;2724:73:86::2;::::0;2761:16;;::::2;::::0;2779:17:::2;::::0;2724:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;2851:14:86::2;::::0;2876:11:::2;::::0;2851:37:::2;::::0;-1:-1:-1;;;2851:37:86;;-1:-1:-1;;;;;2876:11:86;;::::2;2851:37;::::0;::::2;5066:51:120::0;2811:36:86::2;::::0;-1:-1:-1;2851:14:86;::::2;::::0;-1:-1:-1;2851:24:86::2;::::0;5039:18:120;;2851:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2808:80;;;2898:28;2915:6;2907:15;;;;;;;;:::i;20510:478::-:0;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;20611:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20637:11:86::2;::::0;20628:21:::2;::::0;-1:-1:-1;;;20628:21:86;;-1:-1:-1;;;;;20637:11:86;;::::2;20628:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;20628:8:86;-1:-1:-1;20628:8:86::2;::::0;-1:-1:-1;5039:18:120;;20628:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;20659:14:86::2;::::0;20696:16:::2;::::0;20659:73:::2;::::0;-1:-1:-1;;;20659:73:86;;-1:-1:-1;;;;;20659:14:86;;::::2;::::0;-1:-1:-1;20659:36:86::2;::::0;-1:-1:-1;20659:73:86::2;::::0;20696:16;;::::2;::::0;20714:17:::2;::::0;20659:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;20799:14:86::2;::::0;20824:11:::2;::::0;20799:37:::2;::::0;-1:-1:-1;;;20799:37:86;;-1:-1:-1;;;;;20824:11:86;;::::2;20799:37;::::0;::::2;5066:51:120::0;20744:13:86::2;::::0;-1:-1:-1;20744:13:86;;-1:-1:-1;20799:14:86;::::2;::::0;:24:::2;::::0;5039:18:120;;20799:37:86::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20743:93;;;;20846:135;20876:6;20868:15;;;;;;;;:::i;20846:135::-;20618:370;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;20510:478::o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;15340:1995:86:-;1206:28;;-1:-1:-1;;;1206:28:86;;1228:4;1206:28;;;5066:51:120;-1:-1:-1;;;;;;;;;;;1206:13:86;;;5039:18:120;;1206:28:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1244:26:86;;-1:-1:-1;1287:1:86;;-1:-1:-1;1273:16:86;;-1:-1:-1;1273:16:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1273:16:86;-1:-1:-1;1314:11:86;;1299:12;;1244:45;;-1:-1:-1;;;;;;1314:11:86;;1244:45;;1314:11;;1299:12;;;;:::i;:::-;-1:-1:-1;;;;;1299:26:86;;;:12;;;;;;;;;:26;1350:11;;1335:12;;1350:11;;;1335:9;;1350:11;;1335:12;;;;;;:::i;:::-;-1:-1:-1;;;;;1335:26:86;;;:12;;;;;;;;;:26;1371:14;;:50;;-1:-1:-1;;;1371:50:86;;:14;;;:39;;:50;;1411:9;;1371:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;1431:12:86;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;271:11:115::1;::::0;257:26:::1;::::0;-1:-1:-1;;;257:26:115;;-1:-1:-1;;;;;271:11:115;;::::1;257:26;::::0;::::1;5066:51:120::0;15438:5:86::1;::::0;-1:-1:-1;;;;;;;;;;;;257:13:115;-1:-1:-1;257:13:115::1;::::0;5039:18:120;;257:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;353:177:115::1;::::0;;::::1;::::0;::::1;::::0;;420:12:::1;::::0;-1:-1:-1;;;;;420:12:115;;::::1;353:177:::0;;;::::1;::::0;::::1;::::0;293:57:::1;353:177:::0;;;;;;563:17:::1;::::0;637:11:::1;::::0;658:14:::1;::::0;563:158;;-1:-1:-1;;;563:158:115;;353:177;;-1:-1:-1;293:57:115;;-1:-1:-1;563:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;637:11;;::::1;::::0;658:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;675:16:115;693:18:::1;::::0;563:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;774:13;::::0;766:35:::1;::::0;-1:-1:-1;;;766:35:115;;::::1;::::0;::::1;9826:25:120::0;;;;9867:18;;;9860:34;;;541:180:115;;-1:-1:-1;733:7:115::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;766:7:115;::::1;::::0;9799:18:120;;766:35:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;732:69;;;;;;811:22;853:1;856;859;836:25;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;836:25:115;;::::1;::::0;;;892:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;836:25:115::1;892:164:::0;;::::1;::::0;;;;1027:18:::1;892:164:::0;;;;;;;872:184;;836:25;;-1:-1:-1;872:17:115::1;::::0;:184:::1;::::0;:17;;:184;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;872:184:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;1066:17:::1;::::0;:69;;-1:-1:-1;;;1066:69:115;;-1:-1:-1;;;;;1066:17:115;;::::1;::::0;:36:::1;::::0;:69:::1;::::0;1103:15;;1066:69:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1189:14:115::1;::::0;1214:11:::1;::::0;1189:37:::1;::::0;-1:-1:-1;;;1189:37:115;;-1:-1:-1;;;;;1214:11:115;;::::1;1189:37;::::0;::::1;5066:51:120::0;1149:36:115::1;::::0;-1:-1:-1;1189:14:115;::::1;::::0;-1:-1:-1;1189:24:115::1;::::0;5039:18:120;;1189:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1146:80;;;1236:28;1253:6;1245:15;;;;;;;;:::i;1236:28::-;1278:11;1274:115;;;1305:14;::::0;1342:16:::1;::::0;1305:73:::1;::::0;-1:-1:-1;;;1305:73:115;;-1:-1:-1;;;;;1305:14:115;;::::1;::::0;:36:::1;::::0;:73:::1;::::0;1342:16;::::1;::::0;1360:17:::1;::::0;1305:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1274:115;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;1398:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1437:11:115::1;::::0;1423:26:::1;::::0;-1:-1:-1;;;1423:26:115;;-1:-1:-1;;;;;1437:11:115;;::::1;1423:26;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;1423:13:115;-1:-1:-1;1423:13:115::1;::::0;-1:-1:-1;5039:18:120;;1423:26:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1522:183:115::1;::::0;;::::1;::::0;::::1;::::0;;1589:15:::1;::::0;-1:-1:-1;;;;;1589:15:115;;::::1;1522:183:::0;;;::::1;::::0;::::1;::::0;1459:60:::1;1522:183:::0;;;;;;1741:17:::1;::::0;1815:11:::1;::::0;1836:14:::1;::::0;1741:158;;-1:-1:-1;;;1741:158:115;;1522:183;;-1:-1:-1;1459:60:115;;-1:-1:-1;1741:17:115;::::1;::::0;:60:::1;::::0;:158:::1;::::0;1815:11;;::::1;::::0;1836:14;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1853:16:115;1871:18:::1;::::0;1741:158:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1930:13;::::0;;1922:38;;-1:-1:-1;;;1922:38:115;;1716:183;;-1:-1:-1;;;;;;;;;;;;1922:7:115;::::1;::::0;:38:::1;::::0;1716:183;;1922:38:::1;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;1922:38:115::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:25;::::0;1910:50;;-1:-1:-1;1910:50:115;;-1:-1:-1;1910:50:115;-1:-1:-1;1982:25:115::1;::::0;1910:50;;;;;;1982:25:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;1982:25:115;;::::1;::::0;;;2041:164:::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;;;;;;;1982:25:115::1;2041:164:::0;;::::1;::::0;;;;2176:18:::1;2041:164:::0;;;;;;;2018:187;;1982:25;;-1:-1:-1;2018:20:115::1;::::0;:187:::1;::::0;:20;;:187;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2018:187:115::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2216:17:::1;::::0;:72;;-1:-1:-1;;;2216:72:115;;-1:-1:-1;;;;;2216:17:115;;::::1;::::0;:36:::1;::::0;:72:::1;::::0;2253:18;;2216:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2311:14:115::1;::::0;2336:11:::1;::::0;2311:37:::1;::::0;-1:-1:-1;;;2311:37:115;;-1:-1:-1;;;;;2336:11:115;;::::1;2311:37;::::0;::::1;5066:51:120::0;2311:14:115;::::1;::::0;-1:-1:-1;2311:24:115::1;::::0;-1:-1:-1;5039:18:120;;2311:37:115::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2298:50:::0;-1:-1:-1;2358:28:115::1;::::0;-1:-1:-1;2298:50:115;2367:15:::1;::::0;::::1;;;;;;:::i;2358:28::-;2400:11;2396:150;;;2436:11;::::0;2427:21:::1;::::0;-1:-1:-1;;;2427:21:115;;-1:-1:-1;;;;;2436:11:115;;::::1;2427:21;::::0;::::1;5066:51:120::0;-1:-1:-1;;;;;;;;;;;2427:8:115;::::1;::::0;5039:18:120;;2427:21:115::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2462:14:115::1;::::0;2499:16:::1;::::0;2462:73:::1;::::0;-1:-1:-1;;;2462:73:115;;-1:-1:-1;;;;;2462:14:115;;::::1;::::0;-1:-1:-1;2462:36:115::1;::::0;-1:-1:-1;2462:73:115::1;::::0;2499:16;;::::1;::::0;2517:17:::1;::::0;2462:73:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2396:150;-1:-1:-1::0;;;;;;;;;;;309:37:21::1;;-1:-1:-1::0;;;;;2555:12:115::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15455:16:86::2;15474:302;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;15474:302:86::2;;::::0;::::2;;;;15542:4;-1:-1:-1::0;;;;;15474:302:86::2;;;;;15577:4;-1:-1:-1::0;;;;;15474:302:86::2;;;;;15603:1;15474:302;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;15474:302:86::2;;::::0;::::2;;;;15711:1;15474:302;;;;;;15747:12;15762:3;15747:18;;;;:::i;:::-;15474:302:::0;;15808:14:::2;::::0;:39:::2;::::0;-1:-1:-1;;;15808:39:86;;15455:321;;-1:-1:-1;15787:18:86::2;::::0;-1:-1:-1;;;;;15808:14:86;;::::2;::::0;:33:::2;::::0;:39:::2;::::0;15455:321;;15808:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15867:11;::::0;15858:21:::2;::::0;-1:-1:-1;;;15858:21:86;;-1:-1:-1;;;;;15867:11:86;;::::2;15858:21;::::0;::::2;5066:51:120::0;15787:60:86;;-1:-1:-1;;;;;;;;;;;;15858:8:86;::::2;::::0;5039:18:120;;15858:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15889:14:86::2;::::0;15926:16:::2;::::0;15889:73:::2;::::0;-1:-1:-1;;;15889:73:86;;-1:-1:-1;;;;;15889:14:86;;::::2;::::0;-1:-1:-1;15889:36:86::2;::::0;-1:-1:-1;15889:73:86::2;::::0;15926:16;;::::2;::::0;15944:17:::2;::::0;15889:73:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15982:11:86::2;::::0;15973:21:::2;::::0;-1:-1:-1;;;15973:21:86;;-1:-1:-1;;;;;15982:11:86;;::::2;15973:21;::::0;::::2;5066:51:120::0;-1:-1:-1;;;;;;;;;;;15973:8:86;-1:-1:-1;15973:8:86::2;::::0;-1:-1:-1;5039:18:120;;15973:21:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;16004:14:86::2;::::0;16041:16:::2;::::0;16004:76:::2;::::0;-1:-1:-1;;;16004:76:86;;-1:-1:-1;;;;;16004:14:86;;::::2;::::0;-1:-1:-1;16004:36:86::2;::::0;-1:-1:-1;16004:76:86::2;::::0;16041:16;;::::2;::::0;16059:20:::2;::::0;16004:76:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;16133:18:86::2;::::0;16125:39:::2;::::0;-1:-1:-1;;;16125:39:86;;16092:7:::2;::::0;-1:-1:-1;16092:7:86;;-1:-1:-1;16092:7:86;;-1:-1:-1;;;;;;;;;;;16125:7:86;::::2;::::0;:39:::2;::::0;16153:10;;16125:39:::2;;9826:25:120::0;;;9882:2;9867:18;;9860:34;9814:2;9799:18;;9652:248;16125:39:86::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16091:73;;;;;;16174:25;16219:1;16222;16225;16202:25;;;;;;;;;;:::i;:::-;;::::0;;;;::::2;-1:-1:-1::0;;16202:25:86;;;;;;;16258:18:::2;::::0;-1:-1:-1;;;16250:39:86;;::::2;::::0;::::2;9826:25:120::0;9867:18;;;9860:34;;;16202:25:86;-1:-1:-1;;;;;;;;;;;;16250:7:86;::::2;::::0;9799:18:120;;16250:39:86::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16327:25;::::0;16238:51;;-1:-1:-1;16238:51:86;;-1:-1:-1;16238:51:86;-1:-1:-1;16299:25:86::2;::::0;16327::::2;::::0;16238:51;;;;;;16327:25:::2;;;:::i;:::-;;::::0;;-1:-1:-1;;16327:25:86;;::::2;::::0;;;16404:1:::2;16390:16:::0;;;;;::::2;::::0;;16327:25;;-1:-1:-1;16363:24:86::2;::::0;16327:25;16390:16:::2;::::0;::::2;::::0;16327:25;16390:16:::2;::::0;::::2;-1:-1:-1::0;;16444:14:86::2;::::0;;16456:1:::2;16444:14:::0;;;;;::::2;::::0;;;16363:43;;-1:-1:-1;16416:25:86::2;::::0;16444:14;-1:-1:-1;16444:14:86::2;::::0;::::2;;;;;;;;;;;;;;;-1:-1:-1::0;;16492:16:86::2;::::0;16473::::2;::::0;16416:42;;-1:-1:-1;;;;;;16492:16:86;;::::2;16473::::0;::::2;:35;16469:409;;;16537:16;::::0;16524:10;;-1:-1:-1;;;;;16537:16:86;;::::2;::::0;16524:7;;16537:16:::2;::::0;16524:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;16524:29:86;;::::2;:10;::::0;;::::2;::::0;;;;;:29;16580:16:::2;::::0;16567:10;;16580:16;::::2;::::0;16567:7;;16580:16;;16567:10;::::2;;;;;:::i;:::-;;;;;;:29;-1:-1:-1::0;;;;;16567:29:86::2;;;-1:-1:-1::0;;;;;16567:29:86::2;;;::::0;::::2;16626:12;16610:10;16621:1;16610:13;;;;;;;;:::i;:::-;;;;;;:28;;;;16668:12;16652:10;16663:1;16652:13;;;;;;;;:::i;:::-;;;;;;:28;;;;16469:409;;;16724:16;::::0;16711:10;;-1:-1:-1;;;;;16724:16:86;;::::2;::::0;16711:7;;16724:16:::2;::::0;16711:10:::2;;;;:::i;:::-;-1:-1:-1::0;;;;;16711:29:86;;::::2;:10;::::0;;::::2;::::0;;;;;:29;16767:16:::2;::::0;16754:10;;16767:16;::::2;::::0;16754:7;;16767:16;;16754:10;::::2;;;;;:::i;:::-;;;;;;:29;-1:-1:-1::0;;;;;16754:29:86::2;;;-1:-1:-1::0;;;;;16754:29:86::2;;;::::0;::::2;16813:12;16797:10;16808:1;16797:13;;;;;;;;:::i;:::-;;;;;;:28;;;;16855:12;16839:10;16850:1;16839:13;;;;;;;;:::i;:::-;;;;;;:28;;;;16469:409;16902:14;::::0;:60:::2;::::0;-1:-1:-1;;;16902:60:86;;16888:11:::2;::::0;-1:-1:-1;;;;;16902:14:86::2;::::0;:33:::2;::::0;:60:::2;::::0;16936:4;;16942:7;;16951:10;;16902:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16888:74;;16972:52;16983:6;16972:52;;;;;;;;;;;;;;;;::::0;:10:::2;:52::i;:::-;17035:19;17057:10;17068:1;17057:13;;;;;;;;:::i;:::-;;;;;;;17035:35;;17096:10;17107:1;17096:13;;;;;;;;:::i;:::-;;;;;;;17080:10;17091:1;17080:13;;;;;;;;:::i;:::-;;;;;;:29;;;;17135:6;17119:10;17130:1;17119:13;;;;;;;;:::i;:::-;;;;;;:22;;;;17152:15;17190:7;17198:1;17190:10;;;;;;;;:::i;:::-;;;;;;;17177:7;17185:1;17177:10;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17177:23:86::2;;;-1:-1:-1::0;;;;;17177:23:86::2;;;::::0;::::2;17223:7;17210;17218:1;17210:10;;;;;;;;:::i;:::-;;;;;;:20;-1:-1:-1::0;;;;;17210:20:86::2;;;-1:-1:-1::0;;;;;17210:20:86::2;;;::::0;::::2;-1:-1:-1::0;;;;;;;;;;;309:37:21::2;;-1:-1:-1::0;;;;;17241:15:86::2;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;17268:14:86::2;::::0;:60:::2;::::0;-1:-1:-1;;;17268:60:86;;-1:-1:-1;;;;;17268:14:86;;::::2;::::0;-1:-1:-1;17268:33:86::2;::::0;-1:-1:-1;17268:60:86::2;::::0;17302:4;;17308:7;;17317:10;;17268:60:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15445:1890;;;;;;;;;;;;247:2341:115::1;;;;;;;;;1455:1:86;1196:267:::0;15340:1995::o;6952:173::-;-1:-1:-1;;;;;;;;;;;309:37:21;;-1:-1:-1;;;;;7012:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7048:10:86;;7039:20;;-1:-1:-1;;;7039:20:86;;-1:-1:-1;;;;;7048:10:86;;;7039:20;;;5066:51:120;-1:-1:-1;;;;;;;;;;;7039:8:86;-1:-1:-1;7039:8:86;;-1:-1:-1;5039:18:120;;7039:20:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7069:14:86;;7096:15;;7069:49;;-1:-1:-1;;;7069:49:86;;-1:-1:-1;;;;;7069:14:86;;;;-1:-1:-1;7069:26:86;;-1:-1:-1;7069:49:86;;7096:15;;;;7069:14;;;;:49;;;:::i;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;19690:25:120;;;16269:33:24;-1:-1:-1;;;;;;;;;;;;16320:7:24;;;19663:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;;;;;;;;;;;;16349:8:24;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;16415:125::-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;5209:262:20:-;5271:1;5266;:6;5262:203;;-1:-1:-1;;;;;;;;;;;5293:41:20;;;;26704:2:120;26686:21;;;26743:2;26723:18;;;26716:30;26782:34;26777:2;26762:18;;26755:62;-1:-1:-1;;;26848:2:120;26833:18;;26826:32;26890:3;26875:19;;26502:398;5293:41:20;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;:::-;;;;;;;;5448:6;:4;:6::i;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:20;:1;-1:-1:-1;;;;;3685:6:20;;3681:212;;-1:-1:-1;;;;;;;;;;;3712:44:20;;;;28141:2:120;28123:21;;;28180:2;28160:18;;;28153:30;28219:34;28214:2;28199:18;;28192:62;-1:-1:-1;;;28285:2:120;28270:18;;28263:35;28330:3;28315:19;;27939:401;3712:44:20;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;-1:-1:-1;;;;;;;;;;;18062:43:20;;;;29305:2:120;29287:21;;;29344:2;29324:18;;;29317:30;29383:34;29378:2;29363:18;;29356:62;-1:-1:-1;;;29449:2:120;29434:18;;29427:34;29493:3;29478:19;;29103:400;18062:43:20;;;;;;;;-1:-1:-1;;;;;;;;;;;18155:1:20;18124:33;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;18207:1:20;18176:33;;;;;;:::i;3425:191::-;3504:9;3499:111;;-1:-1:-1;;;;;;;;;;;3560:3:20;3534:30;;;;;;:::i;:::-;;;;;;;;3578:21;3589:9;3262:157;3322:9;3317:96;;-1:-1:-1;;;;;;;;;;;3352:30:20;;;;31051:2:120;31033:21;;;31090:2;31070:18;;;31063:30;31129:25;31124:2;31109:18;;31102:53;31187:2;31172:18;;30849:347;3352:30:20;;;;;;;;3396:6;:4;:6::i;5476:178::-;5557:1;5552;:6;5548:100;;-1:-1:-1;;;;;;;;;;;5605:3:20;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;:::-;5476:178;;;:::o;3904:185::-;3991:1;-1:-1:-1;;;;;3986:6:20;:1;-1:-1:-1;;;;;3986:6:20;;3982:101;;-1:-1:-1;;;;;;;;;;;4040:3:20;4013:31;;;;;;:::i;:::-;;;;;;;;4058:14;4067:1;4070;4058:8;:14::i;2409:432::-;-1:-1:-1;;;;;;;;;;;2985:55:20;3066:16;2452:359;;2652:67;;;-1:-1:-1;;;;;;;;;;;2652:67:20;;;31403:51:120;;;-1:-1:-1;;;31470:18:120;;;31463:34;;;;2712:4:20;31513:18:120;;;31506:34;2489:11:20;;1671:64;2586:43;;31376:18:120;;2652:67:20;;;-1:-1:-1;;2652:67:20;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:20;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:20;2820:7;:14;;-1:-1:-1;;2820:14:20;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;289:461:120;342:3;380:5;374:12;407:6;402:3;395:19;433:4;462:2;457:3;453:12;446:19;;499:2;492:5;488:14;520:1;530:195;544:6;541:1;538:13;530:195;;;609:13;;-1:-1:-1;;;;;605:39:120;593:52;;665:12;;;;700:15;;;;641:1;559:9;530:195;;;-1:-1:-1;741:3:120;;289:461;-1:-1:-1;;;;;289:461:120:o;755:261::-;934:2;923:9;916:21;897:4;954:56;1006:2;995:9;991:18;983:6;954:56;:::i;:::-;946:64;755:261;-1:-1:-1;;;755:261:120:o;1021:1569::-;1225:4;1254:2;1294;1283:9;1279:18;1324:2;1313:9;1306:21;1347:6;1382;1376:13;1413:6;1405;1398:22;1439:2;1429:12;;1472:2;1461:9;1457:18;1450:25;;1534:2;1524:6;1521:1;1517:14;1506:9;1502:30;1498:39;1572:2;1564:6;1560:15;1593:1;1614;1624:937;1640:6;1635:3;1632:15;1624:937;;;1709:22;;;-1:-1:-1;;1705:36:120;1693:49;;1765:13;;1852:9;;-1:-1:-1;;;;;1848:35:120;1833:51;;1923:11;;1917:18;1955:15;;;1948:27;;;2036:19;;1805:15;;;2068:24;;;2158:21;;;;2203:1;;2126:2;2114:15;;;2217:236;2233:8;2228:3;2225:17;2217:236;;;2314:15;;-1:-1:-1;;;;;;2310:42:120;2296:57;;2422:17;;;;2261:1;2252:11;;;;;2379:14;;;;2217:236;;;-1:-1:-1;2539:12:120;;;;2476:5;-1:-1:-1;;;2504:15:120;;;;1666:1;1657:11;1624:937;;;-1:-1:-1;2578:6:120;;1021:1569;-1:-1:-1;;;;;;;;;1021:1569:120:o;2595:258::-;2667:1;2677:113;2691:6;2688:1;2685:13;2677:113;;;2767:11;;;2761:18;2748:11;;;2741:39;2713:2;2706:10;2677:113;;;2808:6;2805:1;2802:13;2799:48;;;-1:-1:-1;;2843:1:120;2825:16;;2818:27;2595:258::o;2858:::-;2900:3;2938:5;2932:12;2965:6;2960:3;2953:19;2981:63;3037:6;3030:4;3025:3;3021:14;3014:4;3007:5;3003:16;2981:63;:::i;:::-;3098:2;3077:15;-1:-1:-1;;3073:29:120;3064:39;;;;3105:4;3060:50;;2858:258;-1:-1:-1;;2858:258:120:o;3121:803::-;3283:4;3312:2;3352;3341:9;3337:18;3382:2;3371:9;3364:21;3405:6;3440;3434:13;3471:6;3463;3456:22;3509:2;3498:9;3494:18;3487:25;;3571:2;3561:6;3558:1;3554:14;3543:9;3539:30;3535:39;3521:53;;3609:2;3601:6;3597:15;3630:1;3640:255;3654:6;3651:1;3648:13;3640:255;;;3747:2;3743:7;3731:9;3723:6;3719:22;3715:36;3710:3;3703:49;3775:40;3808:6;3799;3793:13;3775:40;:::i;:::-;3765:50;-1:-1:-1;3873:12:120;;;;3838:15;;;;3676:1;3669:9;3640:255;;;-1:-1:-1;3912:6:120;;3121:803;-1:-1:-1;;;;;;;3121:803:120:o;4286:629::-;4625:2;4614:9;4607:21;4588:4;4651:49;4696:2;4685:9;4681:18;4198:2;4186:15;;-1:-1:-1;;;4226:4:120;4217:14;;4210:37;4272:2;4263:12;;4121:160;4651:49;4748:9;4740:6;4736:22;4731:2;4720:9;4716:18;4709:50;4783:2;4775:6;4768:18;-1:-1:-1;;;4814:2:120;4806:6;4802:15;4795:39;4863:2;4855:6;4851:15;4843:23;;;4902:6;4897:2;4886:9;4882:18;4875:34;4286:629;;;;:::o;5826:488::-;-1:-1:-1;;;;;6154:15:120;;;6136:34;;6206:15;;;;6201:2;6186:18;;6179:43;6253:2;6238:18;;6231:34;6296:2;6281:18;;6274:34;;;;6085:3;6070:19;;5826:488::o;7114:1325::-;7453:2;7442:9;7435:21;7416:4;7479:49;7524:2;7513:9;7509:18;7027:2;7015:15;;-1:-1:-1;;;7055:4:120;7046:14;;7039:36;7100:2;7091:12;;6950:159;7479:49;7576:9;7568:6;7564:22;7559:2;7548:9;7544:18;7537:50;7611:3;7603:6;7596:19;7648:66;7643:2;7635:6;7631:15;7624:91;7748:66;7743:2;7735:6;7731:15;7724:91;7848:66;7843:2;7835:6;7831:15;7824:91;7949:66;7943:3;7935:6;7931:16;7924:92;8050:66;8044:3;8036:6;8032:16;8025:92;8151:66;8145:3;8137:6;8133:16;8126:92;8252:66;8246:3;8238:6;8234:16;8227:92;-1:-1:-1;;;8347:3:120;8339:6;8335:16;8328:29;8386:3;8378:6;8374:16;8366:24;;;8426:6;8421:2;8410:9;8406:18;8399:34;7114:1325;;;;:::o;8444:277::-;8646:2;8635:9;8628:21;8609:4;8666:49;8711:2;8700:9;8696:18;7027:2;7015:15;;-1:-1:-1;;;7055:4:120;7046:14;;7039:36;7100:2;7091:12;;6950:159;8666:49;8658:57;8444:277;-1:-1:-1;;8444:277:120:o;8726:127::-;8787:10;8782:3;8778:20;8775:1;8768:31;8818:4;8815:1;8808:15;8842:4;8839:1;8832:15;8858:127;8919:10;8914:3;8910:20;8907:1;8900:31;8950:4;8947:1;8940:15;8974:4;8971:1;8964:15;9463:184;9533:6;9586:2;9574:9;9565:7;9561:23;9557:32;9554:52;;;9602:1;9599;9592:12;9554:52;-1:-1:-1;9625:16:120;;9463:184;-1:-1:-1;9463:184:120:o;9905:395::-;9991:6;9999;10007;10060:2;10048:9;10039:7;10035:23;10031:32;10028:52;;;10076:1;10073;10066:12;10028:52;10108:9;10102:16;10158:4;10151:5;10147:16;10140:5;10137:27;10127:55;;10178:1;10175;10168:12;10127:55;10246:2;10231:18;;10225:25;10290:2;10275:18;;;10269:25;10201:5;;10225:25;;-1:-1:-1;10269:25:120;9905:395;-1:-1:-1;;;9905:395:120:o;10305:338::-;10486:19;;;10530:2;10521:12;;10514:28;;;;10598:3;10576:16;-1:-1:-1;;;;;;10572:36:120;10567:2;10558:12;;10551:58;10634:2;10625:12;;10305:338::o;10747:685::-;11087:13;;-1:-1:-1;;;;;11083:22:120;;;11065:41;;11166:4;11154:17;;;11148:24;11144:33;;;11122:20;;;11115:63;11238:4;11226:17;;;11220:24;11246:10;11216:41;11194:20;;;11187:71;;;;11294:3;11289:2;11274:18;;11267:31;;;11335:2;11314:19;;;11307:31;-1:-1:-1;;;11045:3:120;11354:19;;11347:43;11422:3;11407:19;;10747:685::o;11437:341::-;11536:6;11544;11597:2;11585:9;11576:7;11572:23;11568:32;11565:52;;;11613:1;11610;11603:12;11565:52;11642:9;11636:16;11626:26;;11695:2;11684:9;11680:18;11674:25;11728:1;11721:5;11718:12;11708:40;;11744:1;11741;11734:12;11708:40;11767:5;11757:15;;;11437:341;;;;;:::o;11783:127::-;11844:10;11839:3;11835:20;11832:1;11825:31;11875:4;11872:1;11865:15;11899:4;11896:1;11889:15;11915:380;11994:1;11990:12;;;;12037;;;12058:61;;12112:4;12104:6;12100:17;12090:27;;12058:61;12165:2;12157:6;12154:14;12134:18;12131:38;12128:161;;;12211:10;12206:3;12202:20;12199:1;12192:31;12246:4;12243:1;12236:15;12274:4;12271:1;12264:15;12128:161;;11915:380;;;:::o;12425:1526::-;12696:1;12692;12687:3;12683:11;12679:19;12671:6;12667:32;12656:9;12649:51;12630:4;12719:2;12757;12752;12741:9;12737:18;12730:30;12796:4;12791:2;12780:9;12776:18;12769:32;12821:1;12854:6;12848:13;12884:3;12906:1;12934:9;12930:2;12926:18;12916:28;;12994:2;12983:9;12979:18;13016;13006:61;;13060:4;13052:6;13048:17;13038:27;;13006:61;13113:2;13105:6;13102:14;13082:18;13079:38;13076:165;;;-1:-1:-1;;;13140:33:120;;13196:4;13193:1;13186:15;13226:4;13147:3;13214:17;13076:165;13323:3;13308:19;;112;;;155:14;;;13352:18;13379:100;;;;13493:1;13488:314;;;;13345:457;;13379:100;-1:-1:-1;;13412:24:120;;13400:37;;13457:12;;;;-1:-1:-1;13379:100:120;;13488:314;12372:1;12365:14;;;12409:4;12396:18;;13582:1;13596:165;13610:6;13607:1;13604:13;13596:165;;;13688:14;;13675:11;;;13668:35;13731:16;;;;13625:10;;13596:165;;;13781:11;;;-1:-1:-1;;13345:457:120;-1:-1:-1;;;13846:15:120;;13840:22;13833:4;13818:20;;13811:52;-1:-1:-1;;13918:4:120;13906:17;;;13900:24;13894:3;13879:19;;;13872:53;;;;-1:-1:-1;13942:3:120;;12425:1526;-1:-1:-1;;12425:1526:120:o;13956:290::-;14026:6;14079:2;14067:9;14058:7;14054:23;14050:32;14047:52;;;14095:1;14092;14085:12;14047:52;14121:16;;-1:-1:-1;;;;;14166:31:120;;14156:42;;14146:70;;14212:1;14209;14202:12;14687:277;14889:2;14878:9;14871:21;14852:4;14909:49;14954:2;14943:9;14939:18;4198:2;4186:15;;-1:-1:-1;;;4226:4:120;4217:14;;4210:37;4272:2;4263:12;;4121:160;14969:884;15049:6;15102:2;15090:9;15081:7;15077:23;15073:32;15070:52;;;15118:1;15115;15108:12;15070:52;15151:9;15145:16;15180:18;15221:2;15213:6;15210:14;15207:34;;;15237:1;15234;15227:12;15207:34;15275:6;15264:9;15260:22;15250:32;;15320:7;15313:4;15309:2;15305:13;15301:27;15291:55;;15342:1;15339;15332:12;15291:55;15371:2;15365:9;15393:2;15389;15386:10;15383:36;;;15399:18;;:::i;:::-;15474:2;15468:9;15442:2;15528:13;;-1:-1:-1;;15524:22:120;;;15548:2;15520:31;15516:40;15504:53;;;15572:18;;;15592:22;;;15569:46;15566:72;;;15618:18;;:::i;:::-;15658:10;15654:2;15647:22;15693:2;15685:6;15678:18;15733:7;15728:2;15723;15719;15715:11;15711:20;15708:33;15705:53;;;15754:1;15751;15744:12;15705:53;15767:55;15819:2;15814;15806:6;15802:15;15797:2;15793;15789:11;15767:55;:::i;:::-;15841:6;14969:884;-1:-1:-1;;;;;;;14969:884:120:o;15858:225::-;15898:3;15929:1;15925:6;15922:1;15919:13;15916:136;;;15974:10;15969:3;15965:20;15962:1;15955:31;16009:4;16006:1;15999:15;16037:4;16034:1;16027:15;15916:136;-1:-1:-1;16068:9:120;;15858:225::o;16088:989::-;16135:3;16163:6;16204:5;16198:12;16231:2;16226:3;16219:15;16255:45;16296:2;16291:3;16287:12;16273;16255:45;:::i;:::-;16243:57;;;16378:1;16374;16369:3;16365:11;16361:19;16353:4;16346:5;16342:16;16336:23;16332:49;16325:4;16320:3;16316:14;16309:73;16430:4;16423:5;16419:16;16413:23;16445:50;16489:4;16484:3;16480:14;16464;-1:-1:-1;;;;;246:31:120;234:44;;180:104;16445:50;;16544:4;16537:5;16533:16;16527:23;16520:4;16515:3;16511:14;16504:47;16599:4;16592:5;16588:16;16582:23;16647:3;16641:4;16637:14;16630:4;16625:3;16621:14;16614:38;16675:39;16709:4;16693:14;16675:39;:::i;:::-;16661:53;;;16762:4;16755:5;16751:16;16745:23;16812:3;16804:6;16800:16;16793:4;16788:3;16784:14;16777:40;16840:41;16874:6;16858:14;16840:41;:::i;:::-;16826:55;;;16929:4;16922:5;16918:16;16912:23;16944:49;16987:4;16982:3;16978:14;16962;10724:10;10713:22;10701:35;;10648:94;16944:49;;17042:4;17035:5;17031:16;17025:23;17018:4;17013:3;17009:14;17002:47;17065:6;17058:13;;;16088:989;;;;:::o;17082:251::-;17257:2;17246:9;17239:21;17220:4;17277:50;17323:2;17312:9;17308:18;17300:6;17277:50;:::i;17338:1161::-;17687:2;17676:9;17669:21;17650:4;17713:50;17759:2;17748:9;17744:18;17736:6;17713:50;:::i;:::-;17782:2;17832:9;17824:6;17820:22;17815:2;17804:9;17800:18;17793:50;17866:44;17903:6;17895;17866:44;:::i;:::-;17852:58;;17958:9;17950:6;17946:22;17941:2;17930:9;17926:18;17919:50;17989:6;18024;18018:13;18055:6;18047;18040:22;18090:2;18082:6;18078:15;18071:22;;18149:2;18139:6;18136:1;18132:14;18124:6;18120:27;18116:36;18187:2;18179:6;18175:15;18208:1;18218:252;18232:6;18229:1;18226:13;18218:252;;;18322:2;18318:7;18309:6;18301;18297:19;18293:33;18288:3;18281:46;18350:40;18383:6;18374;18368:13;18350:40;:::i;:::-;18448:12;;;;18340:50;-1:-1:-1;18413:15:120;;;;18254:1;18247:9;18218:252;;;-1:-1:-1;18487:6:120;;17338:1161;-1:-1:-1;;;;;;;;;;17338:1161:120:o;18504:277::-;18571:6;18624:2;18612:9;18603:7;18599:23;18595:32;18592:52;;;18640:1;18637;18630:12;18592:52;18672:9;18666:16;18725:5;18718:13;18711:21;18704:5;18701:32;18691:60;;18747:1;18744;18737:12;18786:370;-1:-1:-1;;;;;19020:32:120;;;;19002:51;;19101:4;19089:17;;;;19084:2;19069:18;;19062:45;19138:2;19123:18;;19116:34;18990:2;18975:18;;18786:370::o;19913:354::-;20030:12;;20078:4;20067:16;;20061:23;-1:-1:-1;;;;;;20134:11:120;;;;20030:12;20061:23;20168:1;20157:13;;20154:107;;;20248:2;20242;20232:6;20229:1;20225:14;20222:1;20218:22;20214:31;20210:2;20206:40;20202:49;20193:58;;20154:107;;;;19913:354;;;:::o;20272:1452::-;20510:4;20558:2;20547:9;20543:18;20588:2;20577:9;20570:21;20611:6;20646;20640:13;20677:6;20669;20662:22;20715:2;20704:9;20700:18;20693:25;;20777:2;20767:6;20764:1;20760:14;20749:9;20745:30;20741:39;20727:53;;20799:4;20838:2;20830:6;20826:15;20859:1;20880;20890:719;20906:6;20901:3;20898:15;20890:719;;;20975:22;;;-1:-1:-1;;20971:36:120;20959:49;;21031:13;;21105:9;;21127:24;;;21217:11;;;;21173:15;;;;21252:1;21266:235;21282:8;21277:3;21274:17;21266:235;;;21363:15;;-1:-1:-1;;;;;21359:41:120;21345:56;;21470:17;;;;21427:14;;;;21397:1;21301:11;21266:235;;;-1:-1:-1;21524:5:120;;-1:-1:-1;;;21587:12:120;;;;21552:15;;;;20932:1;20923:11;20890:719;;;20894:3;;;21657:9;21649:6;21645:22;21640:2;21629:9;21625:18;21618:50;;;;21685:33;21711:6;21703;21685:33;:::i;:::-;21677:41;20272:1452;-1:-1:-1;;;;;20272:1452:120:o;21919:274::-;22048:3;22086:6;22080:13;22102:53;22148:6;22143:3;22136:4;22128:6;22124:17;22102:53;:::i;:::-;22171:16;;;;;21919:274;-1:-1:-1;;21919:274:120:o;22198:1015::-;22466:13;;22409:3;;22440;;22519:4;22546:15;;;22409:3;;22610:576;22626:6;22621:3;22618:15;22610:576;;;22689:13;;22762:9;;22827:11;;;;22728:5;;22862:1;22876:235;22892:8;22887:3;22884:17;22876:235;;;22973:15;;-1:-1:-1;;;;;22969:41:120;22955:56;;23080:17;;;;23037:14;;;;23007:1;22911:11;22876:235;;;-1:-1:-1;23133:5:120;;-1:-1:-1;;;23161:15:120;;;;22652:1;22643:11;22610:576;;;-1:-1:-1;23202:5:120;;22198:1015;-1:-1:-1;;;;;;;22198:1015:120:o;23375:550::-;23678:2;23667:9;23660:21;23641:4;23704:49;23749:2;23738:9;23734:18;23295:1;23283:14;;-1:-1:-1;;;23322:4:120;23313:14;;23306:30;23361:2;23352:12;;23218:152;23704:49;23789:22;;;23784:2;23769:18;;;23762:50;23836:2;23821:18;;-1:-1:-1;;;23855:15:120;;;23848:39;;;;-1:-1:-1;23916:2:120;23904:15;;23375:550::o;23930:277::-;24132:2;24121:9;24114:21;24095:4;24152:49;24197:2;24186:9;24182:18;23295:1;23283:14;;-1:-1:-1;;;23322:4:120;23313:14;;23306:30;23361:2;23352:12;;23218:152;24964:371;-1:-1:-1;;;;;;25149:33:120;;25137:46;;25206:13;;25119:3;;25228:61;25206:13;25278:1;25269:11;;25262:4;25250:17;;25228:61;:::i;:::-;25309:16;;;;25327:1;25305:24;;24964:371;-1:-1:-1;;;24964:371:120:o;26180:317::-;-1:-1:-1;;;;;26357:32:120;;26339:51;;26426:2;26421;26406:18;;26399:30;;;-1:-1:-1;;26446:45:120;;26472:18;;26464:6;26446:45;:::i;:::-;26438:53;26180:317;-1:-1:-1;;;;26180:317:120:o;27069:348::-;27299:2;27288:9;27281:21;27262:4;27319:49;27364:2;27353:9;27349:18;26982:2;26970:15;;-1:-1:-1;;;27010:4:120;27001:14;;26994:36;27055:2;27046:12;;26905:159;27319:49;27311:57;;27404:6;27399:2;27388:9;27384:18;27377:34;27069:348;;;;:::o;27586:::-;27816:2;27805:9;27798:21;27779:4;27836:49;27881:2;27870:9;27866:18;27499:2;27487:15;;-1:-1:-1;;;27527:4:120;27518:14;;27511:36;27572:2;27563:12;;27422:159;28345:374;28575:2;28564:9;28557:21;28538:4;28595:49;28640:2;28629:9;28625:18;26982:2;26970:15;;-1:-1:-1;;;27010:4:120;27001:14;;26994:36;27055:2;27046:12;;26905:159;28595:49;-1:-1:-1;;;;;28680:32:120;;;;28675:2;28660:18;;;;28653:60;;;;-1:-1:-1;28587:57:120;28345:374::o;28724:::-;28954:2;28943:9;28936:21;28917:4;28974:49;29019:2;29008:9;29004:18;27499:2;27487:15;;-1:-1:-1;;;27527:4:120;27518:14;;27511:36;27572:2;27563:12;;27422:159;29508:440;29758:2;29747:9;29740:21;29721:4;29784:49;29829:2;29818:9;29814:18;26982:2;26970:15;;-1:-1:-1;;;27010:4:120;27001:14;;26994:36;27055:2;27046:12;;26905:159;29784:49;29881:9;29873:6;29869:22;29864:2;29853:9;29849:18;29842:50;29909:33;29935:6;29927;29909:33;:::i;29953:440::-;30203:2;30192:9;30185:21;30166:4;30229:49;30274:2;30263:9;30259:18;27499:2;27487:15;;-1:-1:-1;;;27527:4:120;27518:14;;27511:36;27572:2;27563:12;;27422:159;30398:446;30648:2;30637:9;30630:21;30687:1;30682:2;30671:9;30667:18;30660:29;-1:-1:-1;;;30720:2:120;30709:9;30705:18;30698:35;30771:3;30764:4;30753:9;30749:20;30742:33;30611:4;30792:46;30833:3;30822:9;30818:19;30810:6;30792:46;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","cannotSupplySignaturesToTaskWithDifferentDigest()":"78007681","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCanDeployPolicy()":"20843b4e","testCanDeploySocialGraph()":"74dbdd72","testCanNotAddInvalidStrategy()":"d27eb358","testCanNotUpdateForQuorumInvalidOperator()":"3932f890","testCanNotUpdateQuorumWithInvalidArray()":"c469d806","testCannotReplaySignatures()":"2db00358","testCannotUseSpentTask()":"60e6bb83","testNoDuplicatePolicyDeploy()":"051cebb1","testNoDuplicateSocialGraphDeploy()":"62b4f17b","testNonPermissionedOperatorCannotRegister()":"9483f3a6","testOperatorCanChangeAlias()":"1aa8b734","testOperatorCanNotChangeOtherAlias()":"1c7a8d63","testOperatorCanRegisterOperator()":"d80dd929","testOperatorCannotRegisterWithOtherOperatorAlias()":"7cd1e621","testOwnerCanAddStrategy()":"5ee285d1","testOwnerCanRemoveOperator()":"1cb11ea6","testOwnerCanRemoveStrategy()":"c584ea29","testPermissionedOperatorCanRegister()":"da709cdf","testRandomAddrCanNotAddStrategy()":"f0b1e95d","testRandomAddrCanNotChangeAlias()":"ae05faf0","testRandomAddrCanNotRemoveStrategy()":"2ba8f2f6","testRandomAddrCannotRemoveOperator()":"ac34a9ff","testSignaturesCannotBeRearranged()":"e73c9058","testSignaturesGreaterThanQuorumThresholdCannotBeRearranged()":"20a44955","testUpdateOperatorsForQuorumZeroStake()":"5f161c34"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cannotSupplySignaturesToTaskWithDifferentDigest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"testCanDeployPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanDeploySocialGraph\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanNotAddInvalidStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanNotUpdateForQuorumInvalidOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCanNotUpdateQuorumWithInvalidArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCannotReplaySignatures\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCannotUseSpentTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNoDuplicatePolicyDeploy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNoDuplicateSocialGraphDeploy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testNonPermissionedOperatorCannotRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOperatorCanChangeAlias\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOperatorCanNotChangeOtherAlias\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOperatorCanRegisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOperatorCannotRegisterWithOtherOperatorAlias\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerCanAddStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerCanRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnerCanRemoveStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPermissionedOperatorCanRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAddrCanNotAddStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAddrCanNotChangeAlias\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAddrCanNotRemoveStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRandomAddrCannotRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSignaturesCannotBeRearranged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testSignaturesGreaterThanQuorumThresholdCannotBeRearranged\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUpdateOperatorsForQuorumZeroStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ServiceManager.t.sol\":\"ServiceManagerTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/ServiceManager.t.sol\":{\"keccak256\":\"0xb030d5413542feffbb4f3be76149fb947195e405cc75c7a3568bc7f89cdafc18\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://917aa7f5aa43d3ba28b1bdd56573aca604a74abaeb4f48532e39dbb22dcc90fc\",\"dweb:/ipfs/QmSysN7dnsf6m4XER23ea5a3th5bbUMLWMiz3yryiQMLgK\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/ServiceManagerSetup.sol\":{\"keccak256\":\"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c\",\"dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE\"]},\"test/helpers/utility/TestPrep.sol\":{\"keccak256\":\"0xe9db9f37b70f6630b5405a0a092fa9d22c8d8d84883026aea4aebd50910f6eaa\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0cafeb108d49f553a0a6c0cd674fe48b88a1709e14e6e499c9bf8782a8c6db3c\",\"dweb:/ipfs/Qmawk5WvJS5t5UABHZ4wYp6Ep2CgVsktdaQxGxPwZk1G5r\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]},\"test/helpers/utility/TestUtils.sol\":{\"keccak256\":\"0x9a8f2eb436c278353499ba7e42dfdc947cadc0c1cac9990e2b3ce6ff7a73d6e3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9da60794dda4557d72a054ffb2d529ba00c3bb71bc360b5238b61e11b15963af\",\"dweb:/ipfs/QmdfJg5jKJZNnmsmhZLCYPqqYQoLeMtUj9Bmugh9AeNXjU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cannotSupplySignaturesToTaskWithDifferentDigest"},{"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":"testCanDeployPolicy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCanDeploySocialGraph"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCanNotAddInvalidStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCanNotUpdateForQuorumInvalidOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCanNotUpdateQuorumWithInvalidArray"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCannotReplaySignatures"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCannotUseSpentTask"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNoDuplicatePolicyDeploy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNoDuplicateSocialGraphDeploy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testNonPermissionedOperatorCannotRegister"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOperatorCanChangeAlias"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOperatorCanNotChangeOtherAlias"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOperatorCanRegisterOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOperatorCannotRegisterWithOtherOperatorAlias"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerCanAddStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerCanRemoveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnerCanRemoveStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPermissionedOperatorCanRegister"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAddrCanNotAddStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAddrCanNotChangeAlias"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAddrCanNotRemoveStrategy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRandomAddrCannotRemoveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSignaturesCannotBeRearranged"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testSignaturesGreaterThanQuorumThresholdCannotBeRearranged"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUpdateOperatorsForQuorumZeroStake"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/ServiceManager.t.sol":"ServiceManagerTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/ServiceManager.t.sol":{"keccak256":"0xb030d5413542feffbb4f3be76149fb947195e405cc75c7a3568bc7f89cdafc18","urls":["bzz-raw://917aa7f5aa43d3ba28b1bdd56573aca604a74abaeb4f48532e39dbb22dcc90fc","dweb:/ipfs/QmSysN7dnsf6m4XER23ea5a3th5bbUMLWMiz3yryiQMLgK"],"license":"BUSL-1.1"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/ServiceManagerSetup.sol":{"keccak256":"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2","urls":["bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c","dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE"],"license":"BUSL-1.1"},"test/helpers/utility/TestPrep.sol":{"keccak256":"0xe9db9f37b70f6630b5405a0a092fa9d22c8d8d84883026aea4aebd50910f6eaa","urls":["bzz-raw://0cafeb108d49f553a0a6c0cd674fe48b88a1709e14e6e499c9bf8782a8c6db3c","dweb:/ipfs/Qmawk5WvJS5t5UABHZ4wYp6Ep2CgVsktdaQxGxPwZk1G5r"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"},"test/helpers/utility/TestUtils.sol":{"keccak256":"0x9a8f2eb436c278353499ba7e42dfdc947cadc0c1cac9990e2b3ce6ff7a73d6e3","urls":["bzz-raw://9da60794dda4557d72a054ffb2d529ba00c3bb71bc360b5238b61e11b15963af","dweb:/ipfs/QmdfJg5jKJZNnmsmhZLCYPqqYQoLeMtUj9Bmugh9AeNXjU"],"license":"BUSL-1.1"}},"version":1},"id":86} \ No newline at end of file diff --git a/out/ServiceManagerSetup.sol/ServiceManagerSetup.json b/out/ServiceManagerSetup.sol/ServiceManagerSetup.json new file mode 100644 index 00000000..958322f3 --- /dev/null +++ b/out/ServiceManagerSetup.sol/ServiceManagerSetup.json @@ -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":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b61cf2d80620006516000396000f3fe60806040523480156200001157600080fd5b5060043610620000b75760003560e01c806385226c81116200007a57806385226c811462000117578063916a17c61462000130578063b5508aa9146200013a578063ba414fa61462000144578063e20c9f71146200015f578063fa7626d4146200016957600080fd5b80630a9254e414620000bc5780631ed7831c14620000c85780633e5e3c2314620000ea5780633f7286f414620000f457806366d9a9a014620000fe575b600080fd5b620000c662000177565b005b620000d262000a42565b604051620000e1919062001234565b60405180910390f35b620000d262000aa6565b620000d262000b08565b6200010862000b6a565b604051620000e1919062001283565b6200012162000c5d565b604051620000e191906200139b565b6200010862000d37565b6200012162000e21565b6200014e62000efb565b6040519015158152602001620000e1565b620000d262001030565b6000546200014e9060ff1681565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015620001d157600080fd5b505af1158015620001e6573d6000803e3d6000fd5b50505050604051620001f890620011c5565b604051809103906000f08015801562000215573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200024490620011d2565b604051809103906000f08015801562000261573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b039283161790556032546040519116906200029290620011e0565b6001600160a01b039091168152602001604051809103906000f080158015620002bf573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620002fe90620011ee565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200033b573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b54604051919216906200037090620011fc565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003a4573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200041457600080fd5b505af115801562000429573d6000803e3d6000fd5b505050506040516200043b906200120a565b604051809103906000f08015801562000458573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039283161790556032546040519116906200048990620011e0565b6001600160a01b039091168152602001604051809103906000f080158015620004b6573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051620004e59062001218565b604051809103906000f08015801562000502573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e54604051919216906200053790620011fc565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200056b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b158015620005f457600080fd5b505af115801562000609573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200066c57600080fd5b505af115801562000681573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015620006d257600080fd5b505af1158015620006e7573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200071e9060019060040162001401565b600060405180830381600087803b1580156200073957600080fd5b505af11580156200074e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007b157600080fd5b505af1158015620007c6573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620007e7915062001226565b6001600160a01b039091168152602001604051809103906000f08015801562000814573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b90620008559060040162001561565b600060405180830381600087803b1580156200087057600080fd5b505af115801562000885573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b6020820152620008d89062001092565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b60208201526200092d9062001092565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b60208201526200097d9062001092565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b6020820152620009d39062001092565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000a2090620011b1565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000a9c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000a7d575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000a9c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a7d575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000a9c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a7d575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000c545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c3b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000bfc5790505b5050505050815250508152602001906001019062000b8e565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000c5457838290600052602060002001805462000ca39062001592565b80601f016020809104026020016040519081016040528092919081815260200182805462000cd19062001592565b801562000d225780601f1062000cf65761010080835404028352916020019162000d22565b820191906000526020600020905b81548152906001019060200180831162000d0457829003601f168201915b50505050508152602001906001019062000c81565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000c545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000e0857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000dc95790505b5050505050815250508152602001906001019062000d5b565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000c5457838290600052602060002001805462000e679062001592565b80601f016020809104026020016040519081016040528092919081815260200182805462000e959062001592565b801562000ee65780601f1062000eba5761010080835404028352916020019162000ee6565b820191906000526020600020905b81548152906001019060200180831162000ec857829003601f168201915b50505050508152602001906001019062000e45565b60008054610100900460ff161562000f1c5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200102b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162000fad917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620015cf565b60408051601f198184030181529082905262000fc99162001602565b6000604051808303816000865af19150503d806000811462001008576040519150601f19603f3d011682016040523d82523d6000602084013e6200100d565b606091505b509150508080602001905181019062001027919062001620565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000a9c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a7d575050505050905090565b60008082604051602001620010a8919062001602565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113a91906200164b565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001178908590879060040162001676565b600060405180830381600087803b1580156200119357600080fd5b505af1158015620011a8573d6000803e3d6000fd5b50505050915091565b6000620011be8262001092565b5092915050565b60df80620016a583390190565b610179806200178483390190565b61076780620018fd83390190565b615f02806200206483390190565b610deb8062007f6683390190565b6101788062008d5183390190565b6137998062008ec983390190565b610896806200c66283390190565b6020808252825182820181905260009190848201906040850190845b81811015620012775783516001600160a01b03168352928401929184019160010162001250565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200132b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620013155783516001600160e01b0319168252928b019260019290920191908b0190620012e9565b50978a01979550505091870191600101620012ab565b50919998505050505050505050565b60005b83811015620013575781810151838201526020016200133d565b8381111562001367576000848401525b50505050565b60008151808452620013878160208601602086016200133a565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620013f457603f19888603018452620013e18583516200136d565b94509285019290850190600101620013c2565b5092979650505050505050565b6060815260006200142c60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b6020815260006200158c60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c90821680620015a757607f821691505b60208210811415620015c957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620015f48160048501602087016200133a565b919091016004019392505050565b60008251620016168184602087016200133a565b9190910192915050565b6000602082840312156200163357600080fd5b815180151581146200164457600080fd5b9392505050565b6000602082840312156200165e57600080fd5b81516001600160a01b03811681146200164457600080fd5b6001600160a01b03831681526040602082018190526000906200169c908301846200136d565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033a26469706673582212209c643da9bf6e64a2a24e51674d851334e15f7e0cbded1b7f56f7356fad9a8f8d64736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;142:2198:114;2329:22:116;;142:2198:114;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;142:2198:114;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;142:2198:114:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;142:2198:114;;;-1:-1:-1;142:2198:114;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;142:2198:114;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000b75760003560e01c806385226c81116200007a57806385226c811462000117578063916a17c61462000130578063b5508aa9146200013a578063ba414fa61462000144578063e20c9f71146200015f578063fa7626d4146200016957600080fd5b80630a9254e414620000bc5780631ed7831c14620000c85780633e5e3c2314620000ea5780633f7286f414620000f457806366d9a9a014620000fe575b600080fd5b620000c662000177565b005b620000d262000a42565b604051620000e1919062001234565b60405180910390f35b620000d262000aa6565b620000d262000b08565b6200010862000b6a565b604051620000e1919062001283565b6200012162000c5d565b604051620000e191906200139b565b6200010862000d37565b6200012162000e21565b6200014e62000efb565b6040519015158152602001620000e1565b620000d262001030565b6000546200014e9060ff1681565b6032546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015620001d157600080fd5b505af1158015620001e6573d6000803e3d6000fd5b50505050604051620001f890620011c5565b604051809103906000f08015801562000215573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b03929092169190911790556040516200024490620011d2565b604051809103906000f08015801562000261573d6000803e3d6000fd5b50602380546001600160a01b0319166001600160a01b039283161790556032546040519116906200029290620011e0565b6001600160a01b039091168152602001604051809103906000f080158015620002bf573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b039283161790556023546035546024546040519284169391821692911690620002fe90620011ee565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200033b573d6000803e3d6000fd5b50601d80546001600160a01b0319166001600160a01b03928316908117909155601b54604051919216906200037090620011fc565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003a4573d6000803e3d6000fd5b50601c80546001600160a01b0319166001600160a01b0392831690811790915560365460405163eb990c5960e01b81523060048201529216602483015260006044830181905260648301529063eb990c5990608401600060405180830381600087803b1580156200041457600080fd5b505af115801562000429573d6000803e3d6000fd5b505050506040516200043b906200120a565b604051809103906000f08015801562000458573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b039283161790556032546040519116906200048990620011e0565b6001600160a01b039091168152602001604051809103906000f080158015620004b6573d6000803e3d6000fd5b50601e80546001600160a01b0319166001600160a01b0392909216919091179055604051620004e59062001218565b604051809103906000f08015801562000502573d6000803e3d6000fd5b50602080546001600160a01b0319166001600160a01b03928316908117909155601e54604051919216906200053790620011fc565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200056b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b03928316908117909155602d54601c5460225460405163256dbbc360e21b8152306004820152928516602484015290841660448301819052931660648201526084810192909252600060a4830152906395b6ef0c9060c401600060405180830381600087803b158015620005f457600080fd5b505af115801562000609573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200066c57600080fd5b505af115801562000681573d6000803e3d6000fd5b50506040516303223eab60e11b8152306004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015620006d257600080fd5b505af1158015620006e7573d6000803e3d6000fd5b5050601f5460405163c0443c5f60e01b81526001600160a01b03909116925063c0443c5f91506200071e9060019060040162001401565b600060405180830381600087803b1580156200073957600080fd5b505af11580156200074e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007b157600080fd5b505af1158015620007c6573d6000803e3d6000fd5b5050601f546040516001600160a01b039091169250620007e7915062001226565b6001600160a01b039091168152602001604051809103906000f08015801562000814573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b03929092169182179055604051636b4c991b60e01b8152636b4c991b90620008559060040162001561565b600060405180830381600087803b1580156200087057600080fd5b505af115801562000885573d6000803e3d6000fd5b5050602154602580546001600160a01b0319166001600160a01b03909216919091179055505060408051808201909152600b81526a6f70657261746f724f6e6560a81b6020820152620008d89062001092565b603e55603780546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f6f70657261746f724f6e65416c69617360801b60208201526200092d9062001092565b603f55603880546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a6f70657261746f7254776f60a81b60208201526200097d9062001092565b6040908155603980546001600160a01b0319166001600160a01b0393909316929092179091558051808201909152601081526f6f70657261746f7254776f416c69617360801b6020820152620009d39062001092565b604155603a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152676e6577416c69617360c01b602082015262000a2090620011b1565b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000a9c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000a7d575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000a9c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a7d575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000a9c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a7d575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000c545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000c3b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000bfc5790505b5050505050815250508152602001906001019062000b8e565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000c5457838290600052602060002001805462000ca39062001592565b80601f016020809104026020016040519081016040528092919081815260200182805462000cd19062001592565b801562000d225780601f1062000cf65761010080835404028352916020019162000d22565b820191906000526020600020905b81548152906001019060200180831162000d0457829003601f168201915b50505050508152602001906001019062000c81565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000c545760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000e0857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162000dc95790505b5050505050815250508152602001906001019062000d5b565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000c5457838290600052602060002001805462000e679062001592565b80601f016020809104026020016040519081016040528092919081815260200182805462000e959062001592565b801562000ee65780601f1062000eba5761010080835404028352916020019162000ee6565b820191906000526020600020905b81548152906001019060200180831162000ec857829003601f168201915b50505050508152602001906001019062000e45565b60008054610100900460ff161562000f1c5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200102b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162000fad917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620015cf565b60408051601f198184030181529082905262000fc99162001602565b6000604051808303816000865af19150503d806000811462001008576040519150601f19603f3d011682016040523d82523d6000602084013e6200100d565b606091505b509150508080602001905181019062001027919062001620565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000a9c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a7d575050505050905090565b60008082604051602001620010a8919062001602565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562001114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113a91906200164b565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189062001178908590879060040162001676565b600060405180830381600087803b1580156200119357600080fd5b505af1158015620011a8573d6000803e3d6000fd5b50505050915091565b6000620011be8262001092565b5092915050565b60df80620016a583390190565b610179806200178483390190565b61076780620018fd83390190565b615f02806200206483390190565b610deb8062007f6683390190565b6101788062008d5183390190565b6137998062008ec983390190565b610896806200c66283390190565b6020808252825182820181905260009190848201906040850190845b81811015620012775783516001600160a01b03168352928401929184019160010162001250565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200132b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620013155783516001600160e01b0319168252928b019260019290920191908b0190620012e9565b50978a01979550505091870191600101620012ab565b50919998505050505050505050565b60005b83811015620013575781810151838201526020016200133d565b8381111562001367576000848401525b50505050565b60008151808452620013878160208601602086016200133a565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620013f457603f19888603018452620013e18583516200136d565b94509285019290850190600101620013c2565b5092979650505050505050565b6060815260006200142c60608301600a81526974657374506f6c69637960b01b602082015260400190565b828103602084015260e181527f7b2276657273696f6e223a22312e302e30222c226e616d65223a22746573745060208201527f6f6c696379222c2272756c6573223a5b7b226964223a226d656d62657273686960408201527f702d636865636b2d73672d31222c22656666656374223a2264656e79222c202260608201527f7072656469636174655f6964223a226d656d62657273686970222c202270726560808201527f6469636174655f706172616d73223a7b22736f6369616c5f67726170685f696460a08201527f223a202273675f31227d7d5d2c22636f6e73656e737573223a207b2262726f6160c08201527f6463617374223a2022616c6c222c20227468726573686f6c64223a202231227d60e0820152607d60f81b610100820152610120810191505082604083015292915050565b6020815260006200158c60208301600a81526974657374506f6c69637960b01b602082015260400190565b92915050565b600181811c90821680620015a757607f821691505b60208210811415620015c957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b0319831681528151600090620015f48160048501602087016200133a565b919091016004019392505050565b60008251620016168184602087016200133a565b9190910192915050565b6000602082840312156200163357600080fd5b815180151581146200164457600080fd5b9392505050565b6000602082840312156200165e57600080fd5b81516001600160a01b03811681146200164457600080fd5b6001600160a01b03831681526040602082018190526000906200169c908301846200136d565b94935050505056fe608060405234801561001057600080fd5b5060c08061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806360f4062b146037578063f8a8fd6d14605a575b600080fd5b60486042366004605c565b50600090565b60405190815260200160405180910390f35b005b600060208284031215606d57600080fd5b81356001600160a01b0381168114608357600080fd5b939250505056fea2646970667358221220770cd87f491b1320e41d17a1a66c24ab16c0f577b58f4e40423c953bf9ab742d64736f6c634300080c0033608060405234801561001057600080fd5b50610159806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806394f649dd14610030575b600080fd5b61005861003e36600461006f565b506040805160008082526020820190815281830190925291565b60405161006692919061009f565b60405180910390f35b60006020828403121561008157600080fd5b81356001600160a01b038116811461009857600080fd5b9392505050565b604080825283519082018190526000906020906060840190828701845b828110156100e15781516001600160a01b0316845292840192908401906001016100bc565b5050508381038285015284518082528583019183019060005b81811015610116578351835292840192918401916001016100fa565b509097965050505050505056fea2646970667358221220ea0593bb35c8e45ebd87fc3d9479eff18f92e4dd231fc22f9fd63b4d8080118964736f6c634300080c0033608060405234801561001057600080fd5b5060405161076738038061076783398101604081905261002f9161008e565b6100383361003e565b506100be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a057600080fd5b81516001600160a01b03811681146100b757600080fd5b9392505050565b61069a806100cd6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122038bbd13e8eab38d5cb707d5510701b481932bc83a0558d2efd561d58193dbf0b64736f6c634300080c00336101006040523480156200001257600080fd5b5060405162005f0238038062005f0283398101604081905262000035916200014b565b6001600160a01b0380841660805280821660c052821660a0528282826200005b6200006c565b50504660e052506200019592505050565b600054610100900460ff1615620000d95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200012c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200014657600080fd5b919050565b6000806000606084860312156200016157600080fd5b6200016c846200012e565b92506200017c602085016200012e565b91506200018c604085016200012e565b90509250925092565b60805160a05160c05160e051615cd86200022a6000396000612ab70152600081816105fd015281816110bd015281816112e10152818161201701528181612e1001528181613c6101526144280152600061084a0152600081816105550152818161108b015281816112af0152818161157a015281816120ab01528181612ec201528181613d8f01526144ce0152615cd86000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806365da1264116101e9578063b7f06ebe1161010f578063da8be864116100ad578063f2fde38b1161007c578063f2fde38b14610a13578063f698da2514610a26578063f8a8fd6d1461041e578063fabc1cbc14610a2e57600080fd5b8063da8be864146109c7578063eb990c59146109da578063eea9064b146109ed578063f16172b014610a0057600080fd5b8063c94b5111116100e9578063c94b511114610963578063ca661c0414610976578063cf80873e1461097f578063d79aceab146109a057600080fd5b8063b7f06ebe1461086c578063bb45fef21461088f578063c5e480db146108bd57600080fd5b80639104c31911610187578063a178848411610156578063a1788484146107ff578063a364f4da1461081f578063a98fb35514610832578063b13442711461084557600080fd5b80639104c319146107ab5780639926ee7d146107c657806399be81c8146107d9578063a1060c88146107ec57600080fd5b8063778e55f3116101c3578063778e55f3146107495780637f54807114610774578063886f1195146107875780638da5cb5b1461079a57600080fd5b806365da1264146107055780636d70f7ae1461072e578063715018a61461074157600080fd5b806339b70e38116102ce57806350f73e7c1161026c5780635c975abb1161023b5780635c975abb146106ab5780635cfe8d2c146106b35780635f966f14146106c657806360d7faed146106f257600080fd5b806350f73e7c14610664578063595c6a671461066d578063597b36da146106755780635ac86ab71461068857600080fd5b806343377382116102a857806343377382146105d15780634665bcda146105f857806349075da31461061f5780634fc40b611461065a57600080fd5b806339b70e38146105505780633cdeb5e01461058f5780633e28391d146105be57600080fd5b8063169283651161033b57806328a573ae1161031557806328a573ae146104cc57806329c77d4f146104df57806333404396146104ff578063374823b51461051257600080fd5b806316928365146104595780631bbce0911461049257806320606b70146104a557600080fd5b80630f589e59116103775780630f589e591461040b57806310d67a2f14610420578063132d496714610433578063136439dd1461044657600080fd5b806304a4f9791461039e5780630b9f487a146103d85780630dd8dd02146103eb575b600080fd5b6103c57f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce81565b6040519081526020015b60405180910390f35b6103c56103e63660046148c0565b610a41565b6103fe6103f936600461495f565b610b03565b6040516103cf91906149a0565b61041e610419366004614a3d565b610e7d565b005b61041e61042e366004614a90565b610fcd565b61041e610441366004614ab4565b611080565b61041e610454366004614af5565b611137565b6103c5610467366004614a90565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103c56104a0366004614ab4565b611276565b6103c57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61041e6104da366004614ab4565b6112a4565b6103c56104ed366004614a90565b609b6020526000908152604090205481565b61041e61050d366004614b0e565b611354565b610540610520366004614bd1565b60a260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016103cf565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cf565b61057761059d366004614a90565b6001600160a01b039081166000908152609960205260409020600101541690565b6105406105cc366004614a90565b611434565b6103c57f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61064d61062d366004614bfd565b60a160209081526000928352604080842090915290825290205460ff1681565b6040516103cf9190614c4c565b6103c56213c68081565b6103c5609d5481565b61041e611454565b6103c5610683366004614ef1565b61151b565b610540610696366004614f2d565b606654600160ff9092169190911b9081161490565b6066546103c5565b61041e6106c1366004614fa3565b61154b565b6105776106d4366004614a90565b6001600160a01b039081166000908152609960205260409020541690565b61041e610700366004615103565b6117f6565b610577610713366004614a90565b609a602052600090815260409020546001600160a01b031681565b61054061073c366004614a90565b611834565b61041e611854565b6103c5610757366004614bfd565b609860209081526000928352604080842090915290825290205481565b61041e610782366004615252565b611868565b606554610577906001600160a01b031681565b6033546001600160a01b0316610577565b61057773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61041e6107d43660046152e2565b61196d565b61041e6107e736600461538d565b611c79565b6103c56107fa3660046153c2565b611d4b565b6103c561080d366004614a90565b609f6020526000908152604090205481565b61041e61082d366004614a90565b611e0b565b61041e61084036600461538d565b611f56565b6105777f000000000000000000000000000000000000000000000000000000000000000081565b61054061087a366004614af5565b609e6020526000908152604090205460ff1681565b61054061089d366004614bd1565b609c60209081526000928352604080842090915290825290205460ff1681565b61092d6108cb366004614a90565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff16908201526060016103cf565b6103c5610971366004615408565b611f91565b6103c561c4e081565b61099261098d366004614a90565b611ff0565b6040516103cf9291906154c4565b6103c57ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e81565b6103fe6109d5366004614a90565b6123a8565b61041e6109e83660046153c2565b61286c565b61041e6109fb3660046154e9565b6129a0565b61041e610a0e366004615541565b6129ac565b61041e610a21366004614a90565b612a3d565b6103c5612ab3565b61041e610a3c366004614af5565b612af1565b604080517f3b89fca151cbe5122d58acee86cf184413d751d585779bdd19d3bbfa3a306dce6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610abf612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b385760405162461bcd60e51b8152600401610b2f9061555d565b60405180910390fd5b6000836001600160401b03811115610b5257610b52614c74565b604051908082528060200260200182016040528015610b7b578160200160208202803683370190505b50905060005b84811015610e7457858582818110610b9b57610b9b615594565b9050602002810190610bad91906155aa565b610bbb9060208101906155ca565b9050868683818110610bcf57610bcf615594565b9050602002810190610be191906155aa565b610beb90806155ca565b905014610c605760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b2f565b6000868683818110610c7457610c74615594565b9050602002810190610c8691906155aa565b610c97906060810190604001614a90565b6001600160a01b03161415610d255760405162461bcd60e51b815260206004820152604860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a206d7573742070726f766964652076616c6964207769746864726177616c606482015267206164647265737360c01b608482015260a401610b2f565b336000818152609a60205260409020546001600160a01b031690610e449082898986818110610d5657610d56615594565b9050602002810190610d6891906155aa565b610d79906060810190604001614a90565b8a8a87818110610d8b57610d8b615594565b9050602002810190610d9d91906155aa565b610da790806155ca565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150899050818110610ded57610ded615594565b9050602002810190610dff91906155aa565b610e0d9060208101906155ca565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612c4d92505050565b838381518110610e5657610e56615594565b60209081029190910101525080610e6c81615629565b915050610b81565b50949350505050565b336000908152609960205260409020546001600160a01b031615610f175760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b2f565b610f21338461306f565b604080518082019091526060815260006020820152610f43338083600061330b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f7c9190615644565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fbf929190615696565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906156c5565b6001600160a01b0316336001600160a01b0316146110745760405162461bcd60e51b8152600401610b2f906156e2565b61107d816136bb565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110df5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110fb5760405162461bcd60e51b8152600401610b2f9061572c565b61110483611434565b15611132576001600160a01b038084166000908152609a602052604090205416611130818585856137b2565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190615789565b6111bf5760405162461bcd60e51b8152600401610b2f906157a6565b606654818116146112385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b0383166000908152609b602052604081205461129b85828686611f91565b95945050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113035750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61131f5760405162461bcd60e51b8152600401610b2f9061572c565b61132883611434565b15611132576001600160a01b038084166000908152609a6020526040902054166111308185858561382d565b6066546002906004908116141561137d5760405162461bcd60e51b8152600401610b2f9061555d565b60005b88811015611428576114188a8a8381811061139d5761139d615594565b90506020028101906113af91906157ee565b8989848181106113c1576113c1615594565b90506020028101906113d391906155ca565b8989868181106113e5576113e5615594565b905060200201358888878181106113fe576113fe615594565b90506020020160208101906114139190615804565b6138a8565b61142181615629565b9050611380565b50505050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615789565b6114dc5760405162461bcd60e51b8152600401610b2f906157a6565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161152e9190615895565b604051602081830303815290604052805190602001209050919050565b60005b81518110156117f257600082828151811061156b5761156b615594565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b81526004016115c491906158a8565b60408051808303816000875af11580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116069190615957565b9150915081156117e4576040808401516001600160a01b0381166000908152609f6020529182208054919282919061163d83615629565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff168152602001876000015181526020018760200151815250905060006116bd8261151b565b6000818152609e602052604090205490915060ff16156117535760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b2f565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061179e9083908590615985565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b83600101935050505061154e565b5050565b6066546002906004908116141561181f5760405162461bcd60e51b8152600401610b2f9061555d565b61182c86868686866138a8565b505050505050565b6001600160a01b0390811660009081526099602052604090205416151590565b61185c613f10565b6118666000613f6a565b565b42836020015110156118ec5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b2f565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119288783888860200151611f91565b6001600160a01b0388166000908152609b6020526040902060018401905585519091506119589088908390613fbc565b6119648787868661330b565b50505050505050565b606654600390600890811614156119965760405162461bcd60e51b8152600401610b2f9061555d565b4282604001511015611a0a5760405162461bcd60e51b81526020600482015260436024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72207369676e617475726520657870696064820152621c995960ea1b608482015260a401610b2f565b600133600090815260a1602090815260408083206001600160a01b038816845290915290205460ff166001811115611a4457611a44614c36565b1415611ab45760405162461bcd60e51b815260206004820152604460248201819052600080516020615c63833981519152908201527f6f72546f4156533a206f70657261746f7220616c726561647920726567697374606482015263195c995960e21b608482015260a401610b2f565b6001600160a01b038316600090815260a26020908152604080832085830151845290915290205460ff1615611b3f5760405162461bcd60e51b815260206004820152603b6024820152600080516020615c6383398151915260448201527f6f72546f4156533a2073616c7420616c7265616479207370656e7400000000006064820152608401610b2f565b611b4883611834565b611bc35760405162461bcd60e51b81526020600482015260526024820152600080516020615c6383398151915260448201527f6f72546f4156533a206f70657261746f72206e6f742072656769737465726564606482015271081d1bc8115a59d95b93185e595c881e595d60721b608482015260a401610b2f565b6000611bd9843385602001518660400151611d4b565b9050611bea84828560000151613fbc565b33600081815260a1602090815260408083206001600160a01b0389168085529083528184208054600160ff19918216811790925560a285528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611c6b9190614c4c565b60405180910390a350505050565b611c8233611834565b611d045760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b2f565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d3f929190615696565b60405180910390a25050565b604080517ff48bd254e30ce2953d187fdb4ef0cfdddb782ab1da55beebaef67c1f258d256e60208201526001600160a01b038087169282019290925290841660608201526080810183905260a08101829052600090819060c0015b6040516020818303038152906040528051906020012090506000611dc8612ab3565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460039060089081161415611e345760405162461bcd60e51b8152600401610b2f9061555d565b600133600090815260a1602090815260408083206001600160a01b038716845290915290205460ff166001811115611e6e57611e6e614c36565b14611eef5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e646572656769737465724f706572908201527f61746f7246726f6d4156533a206f70657261746f72206e6f7420726567697374606482015263195c995960e21b608482015260a401610b2f565b33600081815260a1602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191611f4a9190614c4c565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051611d3f929190615696565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b60208201526001600160a01b038087169282019290925290831660608201526080810184905260a08101829052600090819060c001611da6565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612084919061599e565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211c9190810190615a12565b915091506000831361213357909590945092505050565b6060808351600014156121ed576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826000815181106121a8576121a8615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816000815181106121dc576121dc615594565b60200260200101818152505061239b565b83516121fa906001615ad6565b6001600160401b0381111561221157612211614c74565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50915081516001600160401b0381111561225657612256614c74565b60405190808252806020026020018201604052801561227f578160200160208202803683370190505b50905060005b8451811015612319578481815181106122a0576122a0615594565b60200260200101518382815181106122ba576122ba615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106122ec576122ec615594565b602002602001015182828151811061230657612306615594565b6020908102919091010152600101612285565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0826001845161233e9190615aee565b8151811061234e5761234e615594565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001845161237e9190615aee565b8151811061238e5761238e615594565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156123d45760405162461bcd60e51b8152600401610b2f9061555d565b6123dd83611434565b61245d5760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b2f565b61246683611834565b156124d95760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b2f565b6001600160a01b0383166125555760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b2f565b6001600160a01b038084166000818152609a6020526040902054909116903314806125885750336001600160a01b038216145b806125af57506001600160a01b038181166000908152609960205260409020600101541633145b6126215760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b2f565b60008061262d86611ff0565b9092509050336001600160a01b0387161461268357826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b03191690558151612705576040805160008152602081019091529450612863565b81516001600160401b0381111561271e5761271e614c74565b604051908082528060200260200182016040528015612747578160200160208202803683370190505b50945060005b8251811015612861576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106127ad576127ad615594565b6020026020010151826000815181106127c8576127c8615594565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106127fa576127fa615594565b60200260200101518160008151811061281557612815615594565b60200260200101818152505061282e89878b8585612c4d565b88848151811061284057612840615594565b6020026020010181815250505050808061285990615629565b91505061274d565b505b50505050919050565b600054610100900460ff161580801561288c5750600054600160ff909116105b806128a65750303b1580156128a6575060005460ff166001145b6129095760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b2f565b6000805460ff19166001179055801561292c576000805461ff0019166101001790555b6129368484614176565b61293e61425c565b60975561294a85613f6a565b612953826142f3565b8015612999576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6111323384848461330b565b6129b533611834565b612a335760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b2f565b61107d338261306f565b612a45613f10565b6001600160a01b038116612aaa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b2f565b61107d81613f6a565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612ae4575060975490565b612aec61425c565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906156c5565b6001600160a01b0316336001600160a01b031614612b985760405162461bcd60e51b8152600401610b2f906156e2565b606654198119606654191614612c165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b2f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161126b565b60006001600160a01b038616612ce45760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b2f565b8251612d6e5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b2f565b60005b8351811015612f7d576001600160a01b03861615612dc757612dc78688868481518110612da057612da0615594565b6020026020010151868581518110612dba57612dba615594565b60200260200101516137b2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612df757612df7615594565b60200260200101516001600160a01b03161415612ec0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612e5057612e50615594565b60200260200101516040518363ffffffff1660e01b8152600401612e899291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050612f75565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612f0257612f02615594565b6020026020010151868581518110612f1c57612f1c615594565b60200260200101516040518463ffffffff1660e01b8152600401612f4293929190615b05565b600060405180830381600087803b158015612f5c57600080fd5b505af1158015612f70573d6000803e3d6000fd5b505050505b600101612d71565b506001600160a01b0386166000908152609f60205260408120805491829190612fa583615629565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff168152602001868152602001858152509050600061300d8261151b565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f99061305b9083908590615985565b60405180910390a198975050505050505050565b600061307e6020830183614a90565b6001600160a01b031614156131185760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b2f565b6213c68061312c6060830160408401615b29565b63ffffffff1611156131e15760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b2f565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061321d9060608401908401615b29565b63ffffffff1610156132b35760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b2f565b6001600160a01b038216600090815260996020526040902081906132d78282615b66565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d3f908490615644565b606654600090600190811614156133345760405162461bcd60e51b8152600401610b2f9061555d565b61333d85611434565b156133ba5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b2f565b6133c384611834565b6134435760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b2f565b6001600160a01b038085166000908152609960205260409020600101541680158015906134795750336001600160a01b03821614155b801561348e5750336001600160a01b03861614155b156135fb57428460200151101561350d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156135a75760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b2f565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516135e8908890889085908890610a41565b90506135f982828760000151613fbc565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061365a88611ff0565b9150915060005b82518110156136b0576136a8888a85848151811061368157613681615594565b602002602001015185858151811061369b5761369b615594565b602002602001015161382d565b600101613661565b505050505050505050565b6001600160a01b0381166137495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b2f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906137e9908490615aee565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fbf93929190615b05565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613864908490615ad6565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fbf93929190615b05565b60006138b661068387615bc9565b6000818152609e602052604090205490915060ff1661392b5760405162461bcd60e51b815260206004820152603e6024820152600080516020615c8383398151915260448201527f416374696f6e3a20616374696f6e206973206e6f7420696e20717565756500006064820152608401610b2f565b609d54439061394060a0890160808a01615b29565b63ffffffff166139509190615ad6565b11156139d85760405162461bcd60e51b81526020600482015260576024820152600080516020615c8383398151915260448201527f416374696f6e3a207769746864726177616c44656c6179426c6f636b7320706560648201527f72696f6420686173206e6f742079657420706173736564000000000000000000608482015260a401610b2f565b6139e86060870160408801614a90565b6001600160a01b0316336001600160a01b031614613a705760405162461bcd60e51b815260206004820152604b6024820152600080516020615c8383398151915260448201527f416374696f6e3a206f6e6c7920776974686472617765722063616e20636f6d7060648201526a3632ba329030b1ba34b7b760a91b608482015260a401610b2f565b8115613ae757613a8360a08701876155ca565b85149050613ae75760405162461bcd60e51b815260206004820152603d6024820152600080516020615c8383398151915260448201527f416374696f6e3a20696e707574206c656e677468206d69736d617463680000006064820152608401610b2f565b6000818152609e60205260409020805460ff191690558115613bbd5760005b613b1360a08801886155ca565b9050811015613bb757613baf613b2c6020890189614a90565b33613b3a60a08b018b6155ca565b85818110613b4a57613b4a615594565b9050602002016020810190613b5f9190614a90565b613b6c60c08c018c6155ca565b86818110613b7c57613b7c615594565b905060200201358a8a87818110613b9557613b95615594565b9050602002016020810190613baa9190614a90565b6143ed565b600101613b06565b50613ed5565b336000908152609a60205260408120546001600160a01b0316905b613be560a08901896155ca565b9050811015613ed25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613c1060a08a018a6155ca565b83818110613c2057613c20615594565b9050602002016020810190613c359190614a90565b6001600160a01b03161415613d85576000613c5360208a018a614a90565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613c9460c08e018e6155ca565b87818110613ca457613ca4615594565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c919061599e565b6001600160a01b038084166000908152609a6020526040902054919250168015613d7d57613d7d8184613d5260a08f018f6155ca565b88818110613d6257613d62615594565b9050602002016020810190613d779190614a90565b8561382d565b505050613eca565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166350ff722533613dc260a08c018c6155ca565b85818110613dd257613dd2615594565b9050602002016020810190613de79190614a90565b613df460c08d018d6155ca565b86818110613e0457613e04615594565b905060200201356040518463ffffffff1660e01b8152600401613e2993929190615b05565b600060405180830381600087803b158015613e4357600080fd5b505af1158015613e57573d6000803e3d6000fd5b505050506001600160a01b03821615613eca57613eca8233613e7c60a08c018c6155ca565b85818110613e8c57613e8c615594565b9050602002016020810190613ea19190614a90565b613eae60c08d018d6155ca565b86818110613ebe57613ebe615594565b9050602002013561382d565b600101613bd8565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6033546001600160a01b031633146118665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b2f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383163b156140d657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613ffc9086908690600401615bdb565b602060405180830381865afa158015614019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403d9190615c38565b6001600160e01b031916146111325760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b2f565b826001600160a01b03166140ea8383614526565b6001600160a01b0316146111325760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b2f565b6065546001600160a01b031615801561419757506001600160a01b03821615155b6142195760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b2f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26117f2826136bb565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b61c4e08111156143ac5760405162461bcd60e51b815260206004820152607260248201527f44656c65676174696f6e4d616e616765722e5f696e697469616c697a6557697460448201527f6864726177616c44656c6179426c6f636b733a205f7769746864726177616c4460648201527f656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844608482015271524157414c5f44454c41595f424c4f434b5360701b60a482015260c401610b2f565b609d5460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a1609d55565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144985760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061446190889088908790600401615b05565b600060405180830381600087803b15801561447b57600080fd5b505af115801561448f573d6000803e3d6000fd5b50505050612999565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561451257600080fd5b505af11580156136b0573d6000803e3d6000fd5b6000806000614535858561454a565b91509150614542816145ba565b509392505050565b6000808251604114156145815760208301516040840151606085015160001a61457587828585614775565b945094505050506145b3565b8251604014156145ab57602083015160408401516145a0868383614862565b9350935050506145b3565b506000905060025b9250929050565b60008160048111156145ce576145ce614c36565b14156145d75750565b60018160048111156145eb576145eb614c36565b14156146395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b2f565b600281600481111561464d5761464d614c36565b141561469b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b2f565b60038160048111156146af576146af614c36565b14156147085760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b2f565b600481600481111561471c5761471c614c36565b141561107d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b2f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156147ac5750600090506003614859565b8460ff16601b141580156147c457508460ff16601c14155b156147d55750600090506004614859565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614829573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661485257600060019250925050614859565b9150600090505b94509492505050565b6000806001600160ff1b0383168161487f60ff86901c601b615ad6565b905061488d87828885614775565b935093505050935093915050565b6001600160a01b038116811461107d57600080fd5b80356148bb8161489b565b919050565b600080600080600060a086880312156148d857600080fd5b85356148e38161489b565b945060208601356148f38161489b565b935060408601356149038161489b565b94979396509394606081013594506080013592915050565b60008083601f84011261492d57600080fd5b5081356001600160401b0381111561494457600080fd5b6020830191508360208260051b85010111156145b357600080fd5b6000806020838503121561497257600080fd5b82356001600160401b0381111561498857600080fd5b6149948582860161491b565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156149d8578351835292840192918401916001016149bc565b50909695505050505050565b6000606082840312156149f657600080fd5b50919050565b60008083601f840112614a0e57600080fd5b5081356001600160401b03811115614a2557600080fd5b6020830191508360208285010111156145b357600080fd5b600080600060808486031215614a5257600080fd5b614a5c85856149e4565b925060608401356001600160401b03811115614a7757600080fd5b614a83868287016149fc565b9497909650939450505050565b600060208284031215614aa257600080fd5b8135614aad8161489b565b9392505050565b600080600060608486031215614ac957600080fd5b8335614ad48161489b565b92506020840135614ae48161489b565b929592945050506040919091013590565b600060208284031215614b0757600080fd5b5035919050565b6000806000806000806000806080898b031215614b2a57600080fd5b88356001600160401b0380821115614b4157600080fd5b614b4d8c838d0161491b565b909a50985060208b0135915080821115614b6657600080fd5b614b728c838d0161491b565b909850965060408b0135915080821115614b8b57600080fd5b614b978c838d0161491b565b909650945060608b0135915080821115614bb057600080fd5b50614bbd8b828c0161491b565b999c989b5096995094979396929594505050565b60008060408385031215614be457600080fd5b8235614bef8161489b565b946020939093013593505050565b60008060408385031215614c1057600080fd5b8235614c1b8161489b565b91506020830135614c2b8161489b565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310614c6e57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614cac57614cac614c74565b60405290565b604080519081016001600160401b0381118282101715614cac57614cac614c74565b60405160c081016001600160401b0381118282101715614cac57614cac614c74565b604051601f8201601f191681016001600160401b0381118282101715614d1e57614d1e614c74565b604052919050565b63ffffffff8116811461107d57600080fd5b80356148bb81614d26565b60006001600160401b03821115614d5c57614d5c614c74565b5060051b60200190565b600082601f830112614d7757600080fd5b81356020614d8c614d8783614d43565b614cf6565b82815260059290921b84018101918181019086841115614dab57600080fd5b8286015b84811015614dcf578035614dc28161489b565b8352918301918301614daf565b509695505050505050565b600082601f830112614deb57600080fd5b81356020614dfb614d8783614d43565b82815260059290921b84018101918181019086841115614e1a57600080fd5b8286015b84811015614dcf5780358352918301918301614e1e565b600060e08284031215614e4757600080fd5b614e4f614c8a565b9050614e5a826148b0565b8152614e68602083016148b0565b6020820152614e79604083016148b0565b604082015260608201356060820152614e9460808301614d38565b608082015260a08201356001600160401b0380821115614eb357600080fd5b614ebf85838601614d66565b60a084015260c0840135915080821115614ed857600080fd5b50614ee584828501614dda565b60c08301525092915050565b600060208284031215614f0357600080fd5b81356001600160401b03811115614f1957600080fd5b614f2584828501614e35565b949350505050565b600060208284031215614f3f57600080fd5b813560ff81168114614aad57600080fd5b600060408284031215614f6257600080fd5b614f6a614cb2565b90508135614f778161489b565b815260208201356bffffffffffffffffffffffff81168114614f9857600080fd5b602082015292915050565b60006020808385031215614fb657600080fd5b82356001600160401b0380821115614fcd57600080fd5b818501915085601f830112614fe157600080fd5b8135614fef614d8782614d43565b81815260059190911b8301840190848101908883111561500e57600080fd5b8585015b838110156150e85780358581111561502a5760008081fd5b860160e0818c03601f19018113156150425760008081fd5b61504a614cd4565b898301358881111561505c5760008081fd5b61506a8e8c83870101614d66565b825250604080840135898111156150815760008081fd5b61508f8f8d83880101614dda565b8c8401525060606150a18186016148b0565b82840152608091506150b58f838701614f50565b908301526150c560c08501614d38565b908201526150d48383016148b0565b60a082015285525050918601918601615012565b5098975050505050505050565b801515811461107d57600080fd5b60008060008060006080868803121561511b57600080fd5b85356001600160401b038082111561513257600080fd5b9087019060e0828a03121561514657600080fd5b9095506020870135908082111561515c57600080fd5b506151698882890161491b565b909550935050604086013591506060860135615184816150f5565b809150509295509295909350565b600082601f8301126151a357600080fd5b81356001600160401b038111156151bc576151bc614c74565b6151cf601f8201601f1916602001614cf6565b8181528460208386010111156151e457600080fd5b816020850160208301376000918101602001919091529392505050565b60006040828403121561521357600080fd5b61521b614cb2565b905081356001600160401b0381111561523357600080fd5b61523f84828501615192565b8252506020820135602082015292915050565b600080600080600060a0868803121561526a57600080fd5b85356152758161489b565b945060208601356152858161489b565b935060408601356001600160401b03808211156152a157600080fd5b6152ad89838a01615201565b945060608801359150808211156152c357600080fd5b506152d088828901615201565b95989497509295608001359392505050565b600080604083850312156152f557600080fd5b82356153008161489b565b915060208301356001600160401b038082111561531c57600080fd5b908401906060828703121561533057600080fd5b60405160608101818110838211171561534b5761534b614c74565b60405282358281111561535d57600080fd5b61536988828601615192565b82525060208301356020820152604083013560408201528093505050509250929050565b600080602083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b614994858286016149fc565b600080600080608085870312156153d857600080fd5b84356153e38161489b565b935060208501356153f38161489b565b93969395505050506040820135916060013590565b6000806000806080858703121561541e57600080fd5b84356154298161489b565b93506020850135925060408501356154408161489b565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156154895781516001600160a01b031687529582019590820190600101615464565b509495945050505050565b600081518084526020808501945080840160005b83811015615489578151875295820195908201906001016154a8565b6040815260006154d76040830185615450565b828103602084015261129b8185615494565b6000806000606084860312156154fe57600080fd5b83356155098161489b565b925060208401356001600160401b0381111561552457600080fd5b61553086828701615201565b925050604084013590509250925092565b60006060828403121561555357600080fd5b614aad83836149e4565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126155c057600080fd5b9190910192915050565b6000808335601e198436030181126155e157600080fd5b8301803591506001600160401b038211156155fb57600080fd5b6020019150600581901b36038213156145b357600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561563d5761563d615613565b5060010190565b6060810182356156538161489b565b6001600160a01b03908116835260208401359061566f8261489b565b166020830152604083013561568381614d26565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156156d757600080fd5b8151614aad8161489b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561579b57600080fd5b8151614aad816150f5565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126155c057600080fd5b60006020828403121561581657600080fd5b8135614aad816150f5565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261587c60e0850182615450565b905060c083015184820360c086015261129b8282615494565b602081526000614aad6020830184615821565b602081526000825160e060208401526158c5610100840182615450565b90506020840151601f198483030160408501526158e28282615494565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a085015250608084015161593a60c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152509392505050565b6000806040838503121561596a57600080fd5b8251615975816150f5565b6020939093015192949293505050565b828152604060208201526000614f256040830184615821565b6000602082840312156159b057600080fd5b5051919050565b600082601f8301126159c857600080fd5b815160206159d8614d8783614d43565b82815260059290921b840181019181810190868411156159f757600080fd5b8286015b84811015614dcf57805183529183019183016159fb565b60008060408385031215615a2557600080fd5b82516001600160401b0380821115615a3c57600080fd5b818501915085601f830112615a5057600080fd5b81516020615a60614d8783614d43565b82815260059290921b84018101918181019089841115615a7f57600080fd5b948201945b83861015615aa6578551615a978161489b565b82529482019490820190615a84565b91880151919650909350505080821115615abf57600080fd5b50615acc858286016159b7565b9150509250929050565b60008219821115615ae957615ae9615613565b500190565b600082821015615b0057615b00615613565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615b3b57600080fd5b8135614aad81614d26565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615b718161489b565b615b7b8183615b46565b50600181016020830135615b8e8161489b565b615b988183615b46565b506040830135615ba781614d26565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615bd53683614e35565b92915050565b82815260006020604081840152835180604085015260005b81811015615c0f57858101830151858201606001528201615bf3565b81811115615c21576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615c4a57600080fd5b81516001600160e01b031981168114614aad57600080fdfe44656c65676174696f6e4d616e616765722e72656769737465724f706572617444656c65676174696f6e4d616e616765722e636f6d706c657465517565756564a2646970667358221220ba844290c241c147f1f9dcfb60539efb22665b06b93821e4761ae64622491bce64736f6c634300080c003360806040523480156200001157600080fd5b5060405162000deb38038062000deb833981016040819052620000349162000473565b81816040518060200160405280600081525082816200005c828260006200007560201b60201c565b506200006a905082620000b2565b50505050506200052d565b62000080836200010d565b6000825111806200008e5750805b15620000ad57620000ab83836200014f60201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000dd6200017e565b604080516001600160a01b03928316815291841660208301520160405180910390a16200010a81620001b7565b50565b62000118816200026c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000177838360405180606001604052806027815260200162000dc46027913962000320565b9392505050565b6000620001a860008051602062000da483398151915260001b6200040660201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002225760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200024b60008051602062000da483398151915260001b6200040660201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000282816200040960201b6200028c1760201c565b620002e65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000219565b806200024b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200040660201b620002081760201c565b60606001600160a01b0384163b6200038a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000219565b600080856001600160a01b031685604051620003a79190620004da565b600060405180830381855af49150503d8060008114620003e4576040519150601f19603f3d011682016040523d82523d6000602084013e620003e9565b606091505b509092509050620003fc82828662000418565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200042957508162000177565b8251156200043a5782518084602001fd5b8160405162461bcd60e51b8152600401620002199190620004f8565b80516001600160a01b03811681146200046e57600080fd5b919050565b600080604083850312156200048757600080fd5b620004928362000456565b9150620004a26020840162000456565b90509250929050565b60005b83811015620004c8578181015183820152602001620004ae565b83811115620000ab5750506000910152565b60008251620004ee818460208701620004ab565b9190910192915050565b602081526000825180602084015262000519816040850160208701620004ab565b601f01601f19169190910160400192915050565b610867806200053d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208987a36c5d3aa0a0fed2252e45860edad18de340d0cab5191b8666f49e91e47064736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b50610158806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063adc804da14610030575b600080fd5b61004361003e3660046100f0565b610079565b6040805182516001600160a01b031681526020928301516bffffffffffffffffffffffff16928101929092520160405180910390f35b6040805180820190915260008082526020820152816100c057506040805180820190915273584273a7d8f5b01898b0c609c0e2b6f5984f06058152600160208201526100ea565b5060408051808201909152732c2e3c305116ec1963b00860224e9392637c43288152600160208201525b92915050565b6000806040838503121561010357600080fd5b823560ff8116811461011457600080fd5b94602093909301359350505056fea26469706673582212202270dd5bc452e03f310d46baf84a148759affc1f2d3464eb4a03dc8c45e623da64736f6c634300080c003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6136a580620000f46000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c80638376f7f811610146578063d20e78c9116100c3578063df93506511610087578063df935065146105cb578063e3b05f2f146105de578063e481af9d146105f1578063ea4d3c9b146105f9578063f2fde38b1461060c578063f9120af61461061f57600080fd5b8063d20e78c91461055f578063d574ea3d14610572578063d9d4e99f14610585578063ddb49ce1146105a5578063ddf6a51b146105b857600080fd5b806395b6ef0c1161010a57806395b6ef0c1461050b5780639926ee7d1461051e578063a364f4da14610531578063c0443c5f14610544578063d18a13251461055757600080fd5b80638376f7f8146104ae578063862621ef146104c15780638ad96602146104d45780638da5cb5b146104e7578063949528fc146104f857600080fd5b806333cfb7b7116101df5780636b3aa72e116101a35780636b3aa72e1461042c5780636b4c991b1461043f578063715018a614610452578063749dccc71461045a578063750521f514610488578063786bf3c31461049b57600080fd5b806333cfb7b7146103c057806334099ba1146103e05780635140a548146103f357806366f17e7314610406578063683048351461041957600080fd5b8063175188e811610226578063175188e81461035d57806318cea58d146103705780631a8d0de21461038357806320af739014610396578063245a7bfc146103ad57600080fd5b80621ba1eb146102625780630b3ce015146102775780630ff26fd11461029557806313e7c9d8146102d6578063140a16bc1461030e575b600080fd5b6102756102703660046129e4565b610632565b005b61027f6107d6565b60405161028c9190612a79565b60405180910390f35b6102be6102a3366004612adb565b6066602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b6103006102e4366004612adb565b6065602052600090815260409020805460019091015460ff1682565b60405161028c929190612b15565b61034d61031c366004612bfc565b6067602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b604051901515815260200161028c565b61027561036b366004612adb565b6108af565b61034d61037e366004612d16565b6109ec565b610275610391366004612adb565b610fc8565b61039f60725481565b60405190815260200161028c565b606e546102be906001600160a01b031681565b6103d36103ce366004612adb565b61101a565b60405161028c9190612e3e565b6102756103ee366004612e51565b6111a6565b610275610401366004612ed1565b611224565b610275610414366004612f67565b6114a0565b6070546102be906001600160a01b031681565b6071546102be906001600160a01b031681565b61027561044d366004612e51565b6115d1565b610275611654565b61034d610468366004612e51565b805160208183018101805160698252928201919093012091525460ff1681565b610275610496366004612e51565b611668565b6102756104a9366004612fae565b6116d5565b6102756104bc366004612fae565b611754565b6102756104cf366004612adb565b6117ce565b6102756104e2366004612fef565b611820565b6033546001600160a01b03166102be565b61039f610506366004613008565b61185b565b61027561051936600461303c565b6118f2565b61027561052c3660046130b5565b611a59565b61027561053f366004612adb565b611cff565b610275610552366004613160565b611eb1565b61027f612032565b61027561056d3660046131cc565b612102565b6102be610580366004612fef565b612268565b610598610593366004612e51565b612292565b60405161028c9190613225565b6105986105b3366004612fef565b612337565b6105986105c6366004612e51565b612362565b6105986105d9366004612fef565b612386565b6102756105ec366004612adb565b612396565b6103d36123e8565b606f546102be906001600160a01b031681565b61027561061a366004612adb565b61244a565b61027561062d366004612adb565b6124c3565b60013360009081526065602052604090206001015460ff16600281111561065b5761065b612aff565b146106e15760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e726f746174655072656469636174655369908201527f676e696e674b65793a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4015b60405180910390fd5b6001600160a01b038281166000908152606660205260409020541633146107965760405162461bcd60e51b815260206004820152605760248201527f536572766963654d616e616765722e726f74617465507265646963617465536960448201527f676e696e674b65793a206f70657261746f722063616e206f6e6c79206368616e60648201527f67652069742773206f776e207369676e696e67206b6579000000000000000000608482015260a4016106d8565b6001600160a01b0391821660009081526066602052604080822080546001600160a01b031990811690915592909316815291909120805490911633179055565b6060606b805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461081990613238565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613238565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050815260200190600101906107fa565b50505050905090565b6108b7612515565b60005b606d5481146109e857816001600160a01b0316606d82815481106108e0576108e061326d565b6000918252602090912001546001600160a01b031614156109e057606d805461090b90600190613299565b8154811061091b5761091b61326d565b600091825260209091200154606d80546001600160a01b0390921691839081106109475761094761326d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606d805480610986576109866132b0565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f09a1db4b80c32706328728508c941a6b954f31eb5affd32f236c1fd405f8fea491a25050565b6001016108ba565b5050565b60006109fe60e0850160c086016132c6565b63ffffffff16610a745760405162461bcd60e51b8152602060048201526047602482015260008051602061365083398151915260448201527f3a2071756f72756d207468726573686f6c6420636f756e742063616e6e6f74206064820152666265207a65726f60c81b608482015260a4016106d8565b8151835114610ad55760405162461bcd60e51b815260206004820152602760248201527f4d69736d61746368206265747765656e207369676e65727320616e64207369676044820152666e61747572657360c81b60648201526084016106d8565b8360e00135431115610b355760405162461bcd60e51b815260206004820152603560248201526000805160206136508339815191526044820152740e881d1c985b9cd858dd1a5bdb88195e1c1a5c9959605a1b60648201526084016106d8565b6069610b4185806132ec565b604051610b4f929190613332565b9081526040519081900360200190205460ff1615610bc35760405162461bcd60e51b8152602060048201526037602482015260008051602061365083398151915260448201527f3a207461736b20494420616c7265616479207370656e7400000000000000000060648201526084016106d8565b60006073610bd460a08701876132ec565b604051610be2929190613332565b908152602001604051809103902054905080600014158015610c18575080610c1060e0870160c088016132c6565b63ffffffff16145b610cac5760405162461bcd60e51b8152602060048201526065602482015260008051602061365083398151915260448201527f3a206465706c6f79656420706f6c6963792071756f72756d207468726573686f60648201527f6c6420646966666572732066726f6d207461736b2071756f72756d20746872656084820152641cda1bdb1960da1b60a482015260c4016106d8565b6000610cb78661185b565b905060005b610ccc60e0880160c089016132c6565b63ffffffff16811015610edc57600081118015610d37575085610cf0600183613299565b81518110610d0057610d0061326d565b60200260200101516001600160a01b0316868281518110610d2357610d2361326d565b60200260200101516001600160a01b031611155b15610d975760405162461bcd60e51b815260206004820152602a60248201527f5369676e657220616464726573736573206d75737420626520756e6971756520604482015269185b99081cdbdc9d195960b21b60648201526084016106d8565b6000610dbc83878481518110610daf57610daf61326d565b602002602001015161256f565b9050868281518110610dd057610dd061326d565b60200260200101516001600160a01b0316816001600160a01b031614610e2c5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016106d8565b6001600160a01b038082166000908152606660205260409020541660016001600160a01b03821660009081526065602052604090206001015460ff166002811115610e7957610e79612aff565b14610ed25760405162461bcd60e51b815260206004820152602360248201527f5369676e6572206973206e6f7420612072656769737465726564206f706572616044820152623a37b960e91b60648201526084016106d8565b5050600101610cbc565b5060608601803590610ef19060408901612adb565b6001600160a01b0316610f0a6040890160208a01612adb565b6001600160a01b03167f9f851f9b4b4a1023918bda08f974ba8a757d5e8c1d8d4131e9963fdd64bd1a4d610f4160a08b018b6132ec565b610f4b8c806132ec565b8d60c0016020810190610f5e91906132c6565b8e60e001358e604051610f77979695949392919061336b565b60405180910390a460016069610f8d88806132ec565b604051610f9b929190613332565b908152604051908190036020019020805491151560ff199092169190911790555060019150509392505050565b610fd0612515565b606f80546001600160a01b0319166001600160a01b0383169081179091556040517fa1b8fcd417a2bb56a91d1fc6708faf8283b5730e55821393e70303e544aeec9290600090a250565b606d546060906000906001600160401b0381111561103a5761103a612b47565b604051908082528060200260200182016040528015611063578160200160208202803683370190505b5090506000805b606d5481101561119d57606f54606d80546000926001600160a01b03169163778e55f391899190869081106110a1576110a161326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906133c6565b111561118b57606d81815481106111355761113561326d565b9060005260206000200160009054906101000a90046001600160a01b03168383815181106111655761116561326d565b6001600160a01b039092166020928302919091019091015281611187816133df565b9250505b80611195816133df565b91505061106a565b50909392505050565b3360009081526067602052604080822090516111c39084906133fa565b908152604051908190036020018120805492151560ff19909316929092179091556111ef9082906133fa565b6040519081900381209033907f64296597d208d70296fadc8eb749ff22ab651c8e6e455f35ee8ed66b74d1f77590600090a350565b8281146112445760405163371821d760e21b815260040160405180910390fd5b606060008060005b80851461143e578787828181106112655761126561326d565b90506020028101906112779190613416565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509397505050505b8451811015611435578481815181106112c6576112c661326d565b6020908102919091018101516001600160a01b03811660009081526065909252604082209095509350600184015460ff16600281111561130857611308612aff565b14156113275760405163ba6435f160e01b815260040160405180910390fd5b6000805b606d5481146113ee57606f54606d80546001600160a01b039092169163778e55f39189918590811061135f5761135f61326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da91906133c6565b6113e4908361345f565b915060010161132b565b508084556072548110611402576001611405565b60025b60018086018054909160ff199091169083600281111561142757611427612aff565b0217905550506001016112ab565b5060010161124c565b50848460405161144f929190613332565b60405180910390208787604051611467929190613477565b604051908190038120907ff3fcd2dadc5f6ebf9c1e9310a9e986a14079afc7ecf26784853ea9a3ac90721b90600090a350505050505050565b6114a8612515565b6070546040516356e4026d60e11b815260ff84166004820152602481018390526000916001600160a01b03169063adc804da906044016040805180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190613518565b9050836001600160a01b031681600001516001600160a01b0316146115565760405163a4e34a6960e01b815260040160405180910390fd5b606d805460018101825560009182527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80180546001600160a01b0319166001600160a01b03871690811790915560405190917f3f008fd510eae7a9e7bee13513d7b83bef8003d488b5a3d0b0da4de71d6846f191a250505050565b33600090815260676020526040908190209051600191906115f39084906133fa565b908152604051908190036020018120805492151560ff199093169290921790915561161f9082906133fa565b6040519081900381209033907ffbc30d1514eac402cb2045f1dd80ec75fbc997db6f719421b6d7490f4bfb779d90600090a350565b61165c612515565b6116666000612593565b565b611670612515565b60715460405163a98fb35560e01b81526001600160a01b039091169063a98fb355906116a0908490600401613225565b600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b5050505050565b6116dd612515565b60005b8181101561174f576000607460008585858181106117005761170061326d565b90506020020160208101906117159190612adb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611747816133df565b9150506116e0565b505050565b61175c612515565b60005b8181101561174f5760016074600085858581811061177f5761177f61326d565b90506020020160208101906117949190612adb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117c6816133df565b91505061175f565b6117d6612515565b607180546001600160a01b0319166001600160a01b0383169081179091556040517f2a623245c0f1c5741f2a4c247a58842872f1fdf8a31e66d031dd1cd1532e89a790600090a250565b611828612515565b607281905560405181907f76f50103a7b1e136f23c29045235143c62e36705e8253019cb1253d9062bc6d490600090a250565b600061186782806132ec565b6118776040850160208601612adb565b6118876060860160408701612adb565b606086013561189960808801886132ec565b6118a660a08a018a6132ec565b6118b660e08c0160c08d016132c6565b8b60e001356040516020016118d59b9a99989796959493929190613587565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16158080156119125750600054600160ff909116105b8061192c5750303b15801561192c575060005460ff166001145b61198f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d8565b6000805460ff1916600117905580156119b2576000805461ff0019166101001790555b6119bb87612593565b606e80546001600160a01b038089166001600160a01b031992831617909255606f805488841690831617905560708054878416908316179055607180549286169290911691909117905560728290558015611a50576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b3360009081526074602052604090205460ff16611a89576040516332c5b57b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152606660205260409020541615611b215760405162461bcd60e51b815260206004820152604160248201527f536572766963654d616e616765722e72656769737465724f70657261746f725460448201527f6f4156533a206f70657261746f7220616c7265616479207265676973746572656064820152601960fa1b608482015260a4016106d8565b6000805b606d548114611be857606f54606d80546001600160a01b039092169163778e55f391339185908110611b5957611b5961326d565b60009182526020909120015460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd491906133c6565b611bde908361345f565b9150600101611b25565b50607254811061174f5760408051808201825282815260016020808301828152336000908152606590925293902082518155925183820180549394939192909160ff191690836002811115611c3f57611c3f612aff565b021790555050506001600160a01b038084166000908152606660205260409081902080546001600160a01b031916339081179091556071549151639926ee7d60e01b81529190921691639926ee7d91611c9d91908690600401613604565b600060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b50506040513392507f4d0eb1f4bac8744fd2be119845e23b3befc88094b42bcda1204c65694a00f9e59150600090a2505050565b611d07612515565b6001600160a01b03811660009081526065602052604081206001015460ff166002811115611d3757611d37612aff565b1415611db95760405162461bcd60e51b8152602060048201526044602482018190527f536572766963654d616e616765722e646572656769737465724f70657261746f908201527f7246726f6d4156533a206f70657261746f72206973206e6f7420726567697374606482015263195c995960e21b608482015260a4016106d8565b604080518082019091526000815260208101600290526001600160a01b0382166000908152606560209081526040909120825181559082015160018083018054909160ff1990911690836002811115611e1457611e14612aff565b0217905550506071546040516351b27a6d60e11b81526001600160a01b038481166004830152909116915063a364f4da90602401600060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b50506040516001600160a01b03841692507f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9150600090a250565b611eb9612515565b606883604051611ec991906133fa565b90815260200160405180910390208054611ee290613238565b159050611f445760405162461bcd60e51b815260206004820152602a60248201527f536572766963654d616e616765722e6465706c6f79506f6c6963793a20706f6c6044820152696963792065786973747360b01b60648201526084016106d8565b81606884604051611f5591906133fa565b90815260200160405180910390209080519060200190611f76929190612936565b5080607384604051611f8891906133fa565b9081526040516020918190038201902091909155606b80546001810182556000919091528451611fdf927fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b490920191860190612936565b5082604051611fee91906133fa565b60405180910390207fb6487025b06543ad686bdaa829e2b07863fd163cacd2e0f031340308ec09584e836040516120259190613225565b60405180910390a2505050565b6060606c805480602002602001604051908101604052809291908181526020016000905b828210156108a657838290600052602060002001805461207590613238565b80601f01602080910402602001604051908101604052809291908181526020018280546120a190613238565b80156120ee5780601f106120c3576101008083540402835291602001916120ee565b820191906000526020600020905b8154815290600101906020018083116120d157829003601f168201915b505050505081526020019060010190612056565b61210a612515565b606a8260405161211a91906133fa565b9081526020016040518091039020805461213390613238565b1590506121a05760405162461bcd60e51b815260206004820152603560248201527f536572766963654d616e616765722e6465706c6f79536f6369616c47726170686044820152743a20736f6369616c2067726170682065786973747360581b60648201526084016106d8565b80606a836040516121b191906133fa565b908152602001604051809103902090805190602001906121d2929190612936565b50606c80546001810182556000919091528251612216917f2b4a51ab505fc96a0952efda2ba61bcd3078d4c02c39a186ec16f21883fbe01601906020850190612936565b508160405161222591906133fa565b60405180910390207f0547683ac2bbf227b34fe50fb3ef0f2b8a67dfad502dc794e7a69b0a8dd3e6808260405161225c9190613225565b60405180910390a25050565b606d818154811061227857600080fd5b6000918252602090912001546001600160a01b0316905081565b8051602081830181018051606882529282019190930120915280546122b690613238565b80601f01602080910402602001604051908101604052809291908181526020018280546122e290613238565b801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050505081565b606b818154811061234757600080fd5b9060005260206000200160009150905080546122b690613238565b8051602081830181018051606a82529282019190930120915280546122b690613238565b606c818154811061234757600080fd5b61239e612515565b607080546001600160a01b0319166001600160a01b0383169081179091556040517fcb08c26360210256eb3fd98640509ba95a8a716bc3aa4aadc738e333102de73790600090a250565b6060606d80548060200260200160405190810160405280929190818152602001828054801561244057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612422575b5050505050905090565b612452612515565b6001600160a01b0381166124b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6124c081612593565b50565b6124cb612515565b606e80546001600160a01b0319166001600160a01b0383169081179091556040517f602cec4b1583b07d071161da5eb9589444d2459201e2fab7753dc941e9351c2190600090a250565b6033546001600160a01b031633146116665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600080600061257e85856125e5565b9150915061258b81612655565b509392505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008082516041141561261c5760208301516040840151606085015160001a61261087828585612810565b9450945050505061264e565b825160401415612646576020830151604084015161263b8683836128fd565b93509350505061264e565b506000905060025b9250929050565b600081600481111561266957612669612aff565b14156126725750565b600181600481111561268657612686612aff565b14156126d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106d8565b60028160048111156126e8576126e8612aff565b14156127365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106d8565b600381600481111561274a5761274a612aff565b14156127a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106d8565b60048160048111156127b7576127b7612aff565b14156124c05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561284757506000905060036128f4565b8460ff16601b1415801561285f57508460ff16601c14155b1561287057506000905060046128f4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156128c4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ed576000600192509250506128f4565b9150600090505b94509492505050565b6000806001600160ff1b0383168161291a60ff86901c601b61345f565b905061292887828885612810565b935093505050935093915050565b82805461294290613238565b90600052602060002090601f01602090048101928261296457600085556129aa565b82601f1061297d57805160ff19168380011785556129aa565b828001600101855582156129aa579182015b828111156129aa57825182559160200191906001019061298f565b506129b69291506129ba565b5090565b5b808211156129b657600081556001016129bb565b6001600160a01b03811681146124c057600080fd5b600080604083850312156129f757600080fd5b8235612a02816129cf565b91506020830135612a12816129cf565b809150509250929050565b60005b83811015612a38578181015183820152602001612a20565b83811115612a47576000848401525b50505050565b60008151808452612a65816020860160208601612a1d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ace57603f19888603018452612abc858351612a4d565b94509285019290850190600101612aa0565b5092979650505050505050565b600060208284031215612aed57600080fd5b8135612af8816129cf565b9392505050565b634e487b7160e01b600052602160045260246000fd5b8281526040810160038310612b3a57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612b8557612b85612b47565b604052919050565b600082601f830112612b9e57600080fd5b81356001600160401b03811115612bb757612bb7612b47565b612bca601f8201601f1916602001612b5d565b818152846020838601011115612bdf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612c0f57600080fd5b8235612c1a816129cf565b915060208301356001600160401b03811115612c3557600080fd5b612c4185828601612b8d565b9150509250929050565b60006101008284031215612c5e57600080fd5b50919050565b60006001600160401b03821115612c7d57612c7d612b47565b5060051b60200190565b600082601f830112612c9857600080fd5b81356020612cad612ca883612c64565b612b5d565b82815260059290921b84018101918181019086841115612ccc57600080fd5b8286015b84811015612d0b5780356001600160401b03811115612cef5760008081fd5b612cfd8986838b0101612b8d565b845250918301918301612cd0565b509695505050505050565b600080600060608486031215612d2b57600080fd5b83356001600160401b0380821115612d4257600080fd5b612d4e87838801612c4b565b9450602091508186013581811115612d6557600080fd5b8601601f81018813612d7657600080fd5b8035612d84612ca882612c64565b81815260059190911b8201840190848101908a831115612da357600080fd5b928501925b82841015612dca578335612dbb816129cf565b82529285019290850190612da8565b96505050506040860135915080821115612de357600080fd5b50612df086828701612c87565b9150509250925092565b600081518084526020808501945080840160005b83811015612e335781516001600160a01b031687529582019590820190600101612e0e565b509495945050505050565b602081526000612af86020830184612dfa565b600060208284031215612e6357600080fd5b81356001600160401b03811115612e7957600080fd5b612e8584828501612b8d565b949350505050565b60008083601f840112612e9f57600080fd5b5081356001600160401b03811115612eb657600080fd5b6020830191508360208260051b850101111561264e57600080fd5b60008060008060408587031215612ee757600080fd5b84356001600160401b0380821115612efe57600080fd5b612f0a88838901612e8d565b90965094506020870135915080821115612f2357600080fd5b818701915087601f830112612f3757600080fd5b813581811115612f4657600080fd5b886020828501011115612f5857600080fd5b95989497505060200194505050565b600080600060608486031215612f7c57600080fd5b8335612f87816129cf565b9250602084013560ff81168114612f9d57600080fd5b929592945050506040919091013590565b60008060208385031215612fc157600080fd5b82356001600160401b03811115612fd757600080fd5b612fe385828601612e8d565b90969095509350505050565b60006020828403121561300157600080fd5b5035919050565b60006020828403121561301a57600080fd5b81356001600160401b0381111561303057600080fd5b612e8584828501612c4b565b60008060008060008060c0878903121561305557600080fd5b8635613060816129cf565b95506020870135613070816129cf565b94506040870135613080816129cf565b93506060870135613090816129cf565b925060808701356130a0816129cf565b8092505060a087013590509295509295509295565b600080604083850312156130c857600080fd5b82356130d3816129cf565b915060208301356001600160401b03808211156130ef57600080fd5b908401906060828703121561310357600080fd5b60405160608101818110838211171561311e5761311e612b47565b60405282358281111561313057600080fd5b61313c88828601612b8d565b82525060208301356020820152604083013560408201528093505050509250929050565b60008060006060848603121561317557600080fd5b83356001600160401b038082111561318c57600080fd5b61319887838801612b8d565b945060208601359150808211156131ae57600080fd5b506131bb86828701612b8d565b925050604084013590509250925092565b600080604083850312156131df57600080fd5b82356001600160401b03808211156131f657600080fd5b61320286838701612b8d565b9350602085013591508082111561321857600080fd5b50612c4185828601612b8d565b602081526000612af86020830184612a4d565b600181811c9082168061324c57607f821691505b60208210811415612c5e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156132ab576132ab613283565b500390565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156132d857600080fd5b813563ffffffff81168114612af857600080fd5b6000808335601e1984360301811261330357600080fd5b8301803591506001600160401b0382111561331d57600080fd5b60200191503681900382131561264e57600080fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061337f60a08301898b613342565b828103602084015261339281888a613342565b905063ffffffff8616604084015284606084015282810360808401526133b88185612dfa565b9a9950505050505050505050565b6000602082840312156133d857600080fd5b5051919050565b60006000198214156133f3576133f3613283565b5060010190565b6000825161340c818460208701612a1d565b9190910192915050565b6000808335601e1984360301811261342d57600080fd5b8301803591506001600160401b0382111561344757600080fd5b6020019150600581901b360382131561264e57600080fd5b6000821982111561347257613472613283565b500190565b60008184825b8581101561350d578135601e1988360301811261349957600080fd5b8701803560206001600160401b038211156134b357600080fd5b8160051b36038a13156134c557600080fd5b918201918560005b838110156134fb5784356134e0816129cf565b6001600160a01b0316825293820193908201906001016134cd565b5095509390930192505060010161347d565b509095945050505050565b60006040828403121561352a57600080fd5b604051604081018181106001600160401b038211171561354c5761354c612b47565b604052825161355a816129cf565b815260208301516bffffffffffffffffffffffff8116811461357b57600080fd5b60208201529392505050565b6101008152600061359d61010083018d8f613342565b6001600160a01b038c811660208501528b166040840152606083018a905282810360808401526135ce81898b613342565b905082810360a08401526135e3818789613342565b63ffffffff9590951660c0840152505060e001529998505050505050505050565b60018060a01b038316815260406020820152600082516060604084015261362e60a0840182612a4d565b9050602084015160608401526040840151608084015280915050939250505056fe536572766963654d616e616765722e5072656469636174655665726966696564a2646970667358221220f9e6c961966c7de1b26a3834c6013e142bcf65914c723290fa1ff03abf5e146864736f6c634300080c0033608060405234801561001057600080fd5b5060405161089638038061089683398101604081905261002f91610121565b61003833610047565b61004181610097565b50610151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61009f6100c1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461011f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561013357600080fd5b81516001600160a01b038116811461014a57600080fd5b9392505050565b610736806101606000396000f3fe60806040526004361061008a5760003560e01c8063715018a611610059578063715018a6146101705780638da5cb5b146101855780639b41bf23146101a3578063c6cf634b146101c3578063f2fde38b146101e5576100b6565b80633998fdd3146100d85780635b34b9661461011557806361bc221a1461012c5780636b4c991b14610150576100b6565b366100b65760405162461bcd60e51b815260206004820152600060248201526044015b60405180910390fd5b60405162461bcd60e51b815260206004820152600060248201526044016100ad565b3480156100e457600080fd5b506001546100f8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012157600080fd5b5061012a610205565b005b34801561013857600080fd5b5061014260035481565b60405190815260200161010c565b34801561015c57600080fd5b5061012a61016b366004610566565b610247565b34801561017c57600080fd5b5061012a6102c8565b34801561019157600080fd5b506000546001600160a01b03166100f8565b3480156101af57600080fd5b5061012a6101be366004610617565b6102dc565b3480156101cf57600080fd5b506101d8610306565b60405161010c9190610647565b3480156101f157600080fd5b5061012a610200366004610617565b610394565b6001546001600160a01b03163314610230576040516349cffa9160e11b815260040160405180910390fd5b600380549060006102408361069c565b9190505550565b61024f61040d565b80516102629060029060208401906104b7565b50600154604051636b4c991b60e01b81526001600160a01b0390911690636b4c991b90610293908490600401610647565b600060405180830381600087803b1580156102ad57600080fd5b505af11580156102c1573d6000803e3d6000fd5b5050505050565b6102d061040d565b6102da6000610467565b565b6102e461040d565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60028054610313906106c5565b80601f016020809104026020016040519081016040528092919081815260200182805461033f906106c5565b801561038c5780601f106103615761010080835404028352916020019161038c565b820191906000526020600020905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b61039c61040d565b6001600160a01b0381166104015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ad565b61040a81610467565b50565b6000546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546104c3906106c5565b90600052602060002090601f0160209004810192826104e5576000855561052b565b82601f106104fe57805160ff191683800117855561052b565b8280016001018555821561052b579182015b8281111561052b578251825591602001919060010190610510565b5061053792915061053b565b5090565b5b80821115610537576000815560010161053c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561057857600080fd5b813567ffffffffffffffff8082111561059057600080fd5b818401915084601f8301126105a457600080fd5b8135818111156105b6576105b6610550565b604051601f8201601f19908116603f011681019083821181831017156105de576105de610550565b816040528281528760208487010111156105f757600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561062957600080fd5b81356001600160a01b038116811461064057600080fd5b9392505050565b600060208083528351808285015260005b8181101561067457858101830151858201604001528201610658565b81811115610686576000604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156106be57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806106d957607f821691505b602082108114156106fa57634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212208d16b34e635c9ff0d7741fe57984dbb62479f300d1f60adbf2aba336fa9a06ad64736f6c634300080c0033a26469706673582212209c643da9bf6e64a2a24e51674d851334e15f7e0cbded1b7f56f7356fad9a8f8d64736f6c634300080c0033","sourceMap":"142:2198:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;192:2146;;;:::i;:::-;;2161:134:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3750:14:120;;3743:22;3725:41;;3713:2;3698:18;1819:584:20;3585:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;192:2146:114;240:5;;226:20;;-1:-1:-1;;;226:20:114;;-1:-1:-1;;;;;240:5:114;;;226:20;;;3923:51:120;226:13:114;;;;3896:18:120;;226:20:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;274:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;256:15:114;:43;;-1:-1:-1;;;;;;256:43:114;-1:-1:-1;;;;;256:43:114;;;;;;;;;;327:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;309:15:114;:43;;-1:-1:-1;;;;;;309:43:114;-1:-1:-1;;;;;309:43:114;;;;;;407:5;;388:25;;407:5;;;388:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;388:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;363:22:114;:50;;-1:-1:-1;;;;;;363:50:114;-1:-1:-1;;;;;363:50:114;;;;;;503:15;;521:7;;538:15;;469:86;;503:15;;;;521:7;;;;538:15;;;469:86;;;:::i;:::-;-1:-1:-1;;;;;4243:15:120;;;4225:34;;4295:15;;;4290:2;4275:18;;4268:43;4347:15;;;4342:2;4327:18;;4320:43;4175:2;4160:18;469:86:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:31:114;:132;;-1:-1:-1;;;;;;423:132:114;-1:-1:-1;;;;;423:132:114;;;;;;;;;692:22;;628:88;;423:132;;692:22;;628:88;;;:::i;:::-;-1:-1:-1;;;;;4604:15:120;;;4586:34;;4656:15;;4651:2;4636:18;;4629:43;4536:2;4521:18;628:88:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:17:114;:162;;-1:-1:-1;;;;;;565:162:114;-1:-1:-1;;;;;565:162:114;;;;;;;;;797:14;;737:82;;-1:-1:-1;;;737:82:114;;774:4;737:82;;;4993:34:120;797:14:114;;5043:18:120;;;5036:43;-1:-1:-1;5095:18:120;;;5088:34;;;5138:18;;;5131:34;565:162:114;737:28;;4927:19:120;;737:82:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;830:13:114;:39;;-1:-1:-1;;;;;;830:39:114;-1:-1:-1;;;;;830:39:114;;;;;;920:5;;901:25;;920:5;;;901:25;;;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;901:25:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;879:19:114;:47;;-1:-1:-1;;;;;;879:47:114;-1:-1:-1;;;;;879:47:114;;;;;;;;;;967:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;936:28:114;:51;;-1:-1:-1;;;;;;936:51:114;-1:-1:-1;;;;;936:51:114;;;;;;;;;1110:19;;1049:82;;936:51;;1110:19;;1049:82;;;:::i;:::-;-1:-1:-1;;;;;4604:15:120;;;4586:34;;4656:15;;4651:2;4636:18;;4629:43;4536:2;4521:18;1049:82:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;997:14:114;:136;;-1:-1:-1;;;;;;997:136:114;-1:-1:-1;;;;;997:136:114;;;;;;;;;1209:10;;1241:17;;1281:13;;1143:263;;-1:-1:-1;;;1143:263:114;;1190:4;1143:263;;;5509:34:120;1209:10:114;;;5559:18:120;;;5552:43;1241:17:114;;;5611:18:120;;;5604:43;;;1281:13:114;;5663:18:120;;;5656:43;5715:19;;;5708:44;;;;-1:-1:-1;5768:19:120;;;5761:35;997:136:114;1143:25;;5443:19:120;;1143:263:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1416:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1441:28:114;;-1:-1:-1;;;1441:28:114;;1463:4;1441:28;;;3923:51:120;1441:13:114;;-1:-1:-1;1441:13:114;;-1:-1:-1;3896:18:120;;1441:28:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1479:14:114;;:319;;-1:-1:-1;;;1479:319:114;;-1:-1:-1;;;;;1479:14:114;;;;-1:-1:-1;1479:27:114;;-1:-1:-1;1479:319:114;;:14;;:319;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:28:21;309:37;;-1:-1:-1;;;;;1808:12:114;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1865:14:114;;1842:39;;-1:-1:-1;;;;;1865:14:114;;;;-1:-1:-1;1842:39:114;;-1:-1:-1;1842:39:114;:::i;:::-;-1:-1:-1;;;;;3941:32:120;;;3923:51;;3911:2;3896:18;1842:39:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1833:6:114;:48;;-1:-1:-1;;;;;;1833:48:114;-1:-1:-1;;;;;1833:48:114;;;;;;;;;1891:30;;-1:-1:-1;;;1891:30:114;;:16;;:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1972:6:114;;1931:22;:49;;-1:-1:-1;;;;;;1931:49:114;-1:-1:-1;;;;;1972:6:114;;;1931:49;;;;;;-1:-1:-1;;2021:29:114;;;;;;;;;;;;-1:-1:-1;;;2021:29:114;;;;;;:14;:29::i;:::-;2004:13;1990:60;1991:11;1990:60;;-1:-1:-1;;;;;;1990:60:114;-1:-1:-1;;;;;1990:60:114;;;;;;;;;;2101:34;;;;;;;;;;;;-1:-1:-1;;;2101:34:114;;;;;;:14;:34::i;:::-;2079:18;2060:75;2061:16;2060:75;;-1:-1:-1;;;;;;2060:75:114;-1:-1:-1;;;;;2060:75:114;;;;;;;;;;2176:29;;;;;;;;;;;;-1:-1:-1;;;2176:29:114;;;;;;:14;:29::i;:::-;2159:13;2145:60;;;2146:11;2145:60;;-1:-1:-1;;;;;;2145:60:114;-1:-1:-1;;;;;2145:60:114;;;;;;;;;;;2256:34;;;;;;;;;;;-1:-1:-1;;;2256:34:114;;;;;;:14;:34::i;:::-;2234:18;2215:75;2216:16;2215:75;;-1:-1:-1;;;;;;2215:75:114;-1:-1:-1;;;;;2215:75:114;;;;;;;;;;2311:20;;;;;;;;;;;;-1:-1:-1;;;2311:20:114;;;;;;:8;:20::i;:::-;2300:8;:31;;-1:-1:-1;;;;;;2300:31:114;-1:-1:-1;;;;;2300:31:114;;;;;;;;;;192:2146::o;2161:134:26:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;8142:51:120;;;-1:-1:-1;;;8209:18:120;;;8202:34;2196:43:20;;;;;;;;;8115:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;16134:242:24:-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;9611:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;9584:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;16415:125::-;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;2499:1;2490:6;2485:3;2481:16;2474:27;2455:48;;2251:258;;;:::o;2514:::-;2556:3;2594:5;2588:12;2621:6;2616:3;2609:19;2637:63;2693:6;2686:4;2681:3;2677:14;2670:4;2663:5;2659:16;2637:63;:::i;:::-;2754:2;2733:15;-1:-1:-1;;2729:29:120;2720:39;;;;2761:4;2716:50;;2514:258;-1:-1:-1;;2514:258:120:o;2777:803::-;2939:4;2968:2;3008;2997:9;2993:18;3038:2;3027:9;3020:21;3061:6;3096;3090:13;3127:6;3119;3112:22;3165:2;3154:9;3150:18;3143:25;;3227:2;3217:6;3214:1;3210:14;3199:9;3195:30;3191:39;3177:53;;3265:2;3257:6;3253:15;3286:1;3296:255;3310:6;3307:1;3304:13;3296:255;;;3403:2;3399:7;3387:9;3379:6;3375:22;3371:36;3366:3;3359:49;3431:40;3464:6;3455;3449:13;3431:40;:::i;:::-;3421:50;-1:-1:-1;3529:12:120;;;;3494:15;;;;3332:1;3325:9;3296:255;;;-1:-1:-1;3568:6:120;;2777:803;-1:-1:-1;;;;;;;2777:803:120:o;5971:1325::-;6310:2;6299:9;6292:21;6273:4;6336:49;6381:2;6370:9;6366:18;5884:2;5872:15;;-1:-1:-1;;;5912:4:120;5903:14;;5896:36;5957:2;5948:12;;5807:159;6336:49;6433:9;6425:6;6421:22;6416:2;6405:9;6401:18;6394:50;6468:3;6460:6;6453:19;6505:66;6500:2;6492:6;6488:15;6481:91;6605:66;6600:2;6592:6;6588:15;6581:91;6705:66;6700:2;6692:6;6688:15;6681:91;6806:66;6800:3;6792:6;6788:16;6781:92;6907:66;6901:3;6893:6;6889:16;6882:92;7008:66;7002:3;6994:6;6990:16;6983:92;7109:66;7103:3;7095:6;7091:16;7084:92;-1:-1:-1;;;7204:3:120;7196:6;7192:16;7185:29;7243:3;7235:6;7231:16;7223:24;;;7283:6;7278:2;7267:9;7263:18;7256:34;5971:1325;;;;:::o;7301:277::-;7503:2;7492:9;7485:21;7466:4;7523:49;7568:2;7557:9;7553:18;5884:2;5872:15;;-1:-1:-1;;;5912:4:120;5903:14;;5896:36;5957:2;5948:12;;5807:159;7523:49;7515:57;7301:277;-1:-1:-1;;7301:277:120:o;7583:380::-;7662:1;7658:12;;;;7705;;;7726:61;;7780:4;7772:6;7768:17;7758:27;;7726:61;7833:2;7825:6;7822:14;7802:18;7799:38;7796:161;;;7879:10;7874:3;7870:20;7867:1;7860:31;7914:4;7911:1;7904:15;7942:4;7939:1;7932:15;7796:161;;7583:380;;;:::o;8247:371::-;-1:-1:-1;;;;;;8432:33:120;;8420:46;;8489:13;;8402:3;;8511:61;8489:13;8561:1;8552:11;;8545:4;8533:17;;8511:61;:::i;:::-;8592:16;;;;8610:1;8588:24;;8247:371;-1:-1:-1;;;8247:371:120:o;8623:274::-;8752:3;8790:6;8784:13;8806:53;8852:6;8847:3;8840:4;8832:6;8828:17;8806:53;:::i;:::-;8875:16;;;;;8623:274;-1:-1:-1;;8623:274:120:o;8902:277::-;8969:6;9022:2;9010:9;9001:7;8997:23;8993:32;8990:52;;;9038:1;9035;9028:12;8990:52;9070:9;9064:16;9123:5;9116:13;9109:21;9102:5;9099:32;9089:60;;9145:1;9142;9135:12;9089:60;9168:5;8902:277;-1:-1:-1;;;8902:277:120:o;9647:290::-;9717:6;9770:2;9758:9;9749:7;9745:23;9741:32;9738:52;;;9786:1;9783;9776:12;9738:52;9812:16;;-1:-1:-1;;;;;9857:31:120;;9847:42;;9837:70;;9903:1;9900;9893:12;9942:317;-1:-1:-1;;;;;10119:32:120;;10101:51;;10188:2;10183;10168:18;;10161:30;;;-1:-1:-1;;10208:45:120;;10234:18;;10226:6;10208:45;:::i;:::-;10200:53;9942:317;-1:-1:-1;;;;9942:317:120:o","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"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/utility/ServiceManagerSetup.sol\":\"ServiceManagerSetup\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/ServiceManagerSetup.sol\":{\"keccak256\":\"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c\",\"dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/utility/ServiceManagerSetup.sol":"ServiceManagerSetup"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/ServiceManagerSetup.sol":{"keccak256":"0x8b6ea608580655cd5c050656439a0d1179c18ecb0d31e3c308389cae454340e2","urls":["bzz-raw://f8a93cc9fbbc4ac67e09e4923f882d7e2e3e8661d1374d80bd55b4e2a0f72e3c","dweb:/ipfs/QmRZBsEGGHx9reJkfAbFucB5trhtQo3zoDQCSDaAh17mgE"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":114} \ No newline at end of file diff --git a/out/StdAssertions.sol/StdAssertions.json b/out/StdAssertions.sol/StdAssertions.json new file mode 100644 index 00000000..dc951f50 --- /dev/null +++ b/out/StdAssertions.sol/StdAssertions.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file diff --git a/out/StdChains.sol/StdChains.json b/out/StdChains.sol/StdChains.json new file mode 100644 index 00000000..e6474417 --- /dev/null +++ b/out/StdChains.sol/StdChains.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/out/StdCheats.sol/StdCheats.json b/out/StdCheats.sol/StdCheats.json new file mode 100644 index 00000000..fe6db00b --- /dev/null +++ b/out/StdCheats.sol/StdCheats.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/out/StdCheats.sol/StdCheatsSafe.json b/out/StdCheats.sol/StdCheatsSafe.json new file mode 100644 index 00000000..d6e6d45f --- /dev/null +++ b/out/StdCheats.sol/StdCheatsSafe.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/out/StdError.sol/stdError.json b/out/StdError.sol/stdError.json new file mode 100644 index 00000000..00599412 --- /dev/null +++ b/out/StdError.sol/stdError.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x61025661003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063986c5f6811610070578063986c5f68146100d8578063b22dc54d146100e0578063b67689da146100e8578063d160e4de146100f0578063fa784a44146100f857600080fd5b806305ee8612146100a257806310332977146100c05780631de45560146100c85780638995290f146100d0575b600080fd5b6100aa610100565b6040516100b791906101cb565b60405180910390f35b6100aa61013b565b6100aa61014d565b6100aa61015f565b6100aa610171565b6100aa610183565b6100aa610195565b6100aa6101a7565b6100aa6101b9565b604051603260248201526044015b60408051601f198184030181529190526020810180516001600160e01b0316634e487b7160e01b17905281565b6040516001602482015260440161010e565b6040516021602482015260440161010e565b6040516011602482015260440161010e565b6040516041602482015260440161010e565b6040516031602482015260440161010e565b6040516051602482015260440161010e565b6040516022602482015260440161010e565b6040516012602482015260440161010e565b600060208083528351808285015260005b818110156101f8578581018301518582016040015282016101dc565b8181111561020a576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e11d6baca3bec69fa34c209f43d0205bdba700b5d6f388889e343cf3a845fb7e64736f6c634300080c0033","sourceMap":"162:850:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;162:850:25;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063986c5f6811610070578063986c5f68146100d8578063b22dc54d146100e0578063b67689da146100e8578063d160e4de146100f0578063fa784a44146100f857600080fd5b806305ee8612146100a257806310332977146100c05780631de45560146100c85780638995290f146100d0575b600080fd5b6100aa610100565b6040516100b791906101cb565b60405180910390f35b6100aa61013b565b6100aa61014d565b6100aa61015f565b6100aa610171565b6100aa610183565b6100aa610195565b6100aa6101a7565b6100aa6101b9565b604051603260248201526044015b60408051601f198184030181529190526020810180516001600160e01b0316634e487b7160e01b17905281565b6040516001602482015260440161010e565b6040516021602482015260440161010e565b6040516011602482015260440161010e565b6040516041602482015260440161010e565b6040516031602482015260440161010e565b6040516051602482015260440161010e565b6040516022602482015260440161010e565b6040516012602482015260440161010e565b600060208083528351808285015260005b818110156101f8578581018301518582016040015282016101dc565b8181111561020a576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e11d6baca3bec69fa34c209f43d0205bdba700b5d6f388889e343cf3a845fb7e64736f6c634300080c0033","sourceMap":"162:850:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:86;;;:::i;461:91::-;;;:::i;277:87::-;;;:::i;831:88::-;;;:::i;654:80::-;;;:::i;925:84::-;;;:::i;558:90::-;;;:::i;370:85::-;;;:::i;740:::-;778:47;;820:4;778:47;;;775:36:120;748:18;;778:47:25;;;;-1:-1:-1;;778:47:25;;;;;;;;;;;;;;-1:-1:-1;;;;;778:47:25;-1:-1:-1;;;778:47:25;;;740:85;:::o;185:86::-;224:47;;266:4;224:47;;;775:36:120;748:18;;224:47:25;622:195:120;461:91:25;505:47;;547:4;505:47;;;775:36:120;748:18;;505:47:25;622:195:120;277:87:25;317:47;;359:4;317:47;;;775:36:120;748:18;;317:47:25;622:195:120;831:88:25;872:47;;914:4;872:47;;;775:36:120;748:18;;872:47:25;622:195:120;654:80:25;687:47;;729:4;687:47;;;775:36:120;748:18;;687:47:25;622:195:120;925:84:25;962:47;;1004:4;962:47;;;775:36:120;748:18;;962:47:25;622:195:120;558:90:25;601:47;;643:4;601:47;;;775:36:120;748:18;;601:47:25;622:195:120;370:85:25;408:47;;450:4;408:47;;;775:36:120;748:18;;408:47:25;622:195:120;14:603;132:4;161:2;190;179:9;172:21;222:6;216:13;265:6;260:2;249:9;245:18;238:34;290:1;300:140;314:6;311:1;308:13;300:140;;;409:14;;;405:23;;399:30;375:17;;;394:2;371:26;364:66;329:10;;300:140;;;458:6;455:1;452:13;449:91;;;528:1;523:2;514:6;503:9;499:22;495:31;488:42;449:91;-1:-1:-1;601:2:120;580:15;-1:-1:-1;;576:29:120;561:45;;;;608:2;557:54;;14:603;-1:-1:-1;;;14:603:120:o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdError.sol":"stdError"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/StdInvariant.sol/StdInvariant.json b/out/StdInvariant.sol/StdInvariant.json new file mode 100644 index 00000000..e1382bef --- /dev/null +++ b/out/StdInvariant.sol/StdInvariant.json @@ -0,0 +1 @@ +{"abi":[{"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":"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"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610800806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a291906105f4565b60405180910390f35b61009561015f565b6100956101bf565b6100c361021f565b6040516100a29190610641565b6100d861030e565b6040516100a291906106f4565b6100c36103de565b6100d86104c4565b610095610594565b6060600180548060200260200160405190810160405280929190818152602001828054801561015557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610137575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606002805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b828210156103055760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156102ed57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102af5790505b50505050508152505081526020019060010190610243565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b828210156103055783829060005260206000200180546103519061078f565b80601f016020809104026020016040519081016040528092919081815260200182805461037d9061078f565b80156103ca5780601f1061039f576101008083540402835291602001916103ca565b820191906000526020600020905b8154815290600101906020018083116103ad57829003601f168201915b505050505081526020019060010190610332565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156103055760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104ac57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161046e5790505b50505050508152505081526020019060010190610402565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156103055783829060005260206000200180546105079061078f565b80601f01602080910402602001604051908101604052809291908181526020018280546105339061078f565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b5050505050815260200190600101906104e8565b60606000805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b818110156106355783516001600160a01b031683529284019291840191600101610610565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156106e557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156106d05783516001600160e01b0319168252928b019260019290920191908b01906106a6565b50978a01979550505091870191600101610669565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561078157888603603f1901855282518051808852835b81811015610751578281018a01518982018b01528901610736565b8181111561076157848a838b0101525b50601f01601f19169690960187019550938601939186019160010161071c565b509398975050505050505050565b600181811c908216806107a357607f821691505b602082108114156107c457634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a7571f9429eb20b76773a473c316ba5091b9664f02b02cf9f02611cdb2f68bf364736f6c634300080c0033","sourceMap":"100:2965:26:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a291906105f4565b60405180910390f35b61009561015f565b6100956101bf565b6100c361021f565b6040516100a29190610641565b6100d861030e565b6040516100a291906106f4565b6100c36103de565b6100d86104c4565b610095610594565b6060600180548060200260200160405190810160405280929190818152602001828054801561015557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610137575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606002805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b828210156103055760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156102ed57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102af5790505b50505050508152505081526020019060010190610243565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b828210156103055783829060005260206000200180546103519061078f565b80601f016020809104026020016040519081016040528092919081815260200182805461037d9061078f565b80156103ca5780601f1061039f576101008083540402835291602001916103ca565b820191906000526020600020905b8154815290600101906020018083116103ad57829003601f168201915b505050505081526020019060010190610332565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156103055760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104ac57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161046e5790505b50505050508152505081526020019060010190610402565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156103055783829060005260206000200180546105079061078f565b80601f01602080910402602001604051908101604052809291908181526020018280546105339061078f565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b5050505050815260200190600101906104e8565b60606000805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b818110156106355783516001600160a01b031683529284019291840191600101610610565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156106e557898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156106d05783516001600160e01b0319168252928b019260019290920191908b01906106a6565b50978a01979550505091870191600101610669565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561078157888603603f1901855282518051808852835b81811015610751578281018a01518982018b01528901610736565b8181111561076157848a838b0101525b50601f01601f19169690960187019550938601939186019160010161071c565b509398975050505050505050565b600181811c908216806107a357607f821691505b602082108114156107c457634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a7571f9429eb20b76773a473c316ba5091b9664f02b02cf9f02611cdb2f68bf364736f6c634300080c0033","sourceMap":"100:2965:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;2013:142::-;;;:::i;2161:134::-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:142;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:1268::-;2413:4;2442:2;2482;2471:9;2467:18;2512:2;2501:9;2494:21;2535:6;2570;2564:13;2601:6;2593;2586:22;2639:2;2628:9;2624:18;2617:25;;2701:2;2691:6;2688:1;2684:14;2673:9;2669:30;2665:39;2651:53;;2739:2;2731:6;2727:15;2760:1;2781;2791:699;2807:6;2802:3;2799:15;2791:699;;;2876:22;;;-1:-1:-1;;2872:36:120;2860:49;;2932:13;;2974:9;;2996:24;;;3044:1;3058:157;3074:8;3069:3;3066:17;3058:157;;;3182:12;;;3178:21;;3172:28;3149:16;;;3145:25;;3138:63;3093:12;;3058:157;;;3239:8;3234:3;3231:17;3228:106;;;3318:1;3313:2;3302:8;3294:6;3290:21;3286:30;3279:41;3228:106;-1:-1:-1;3400:2:120;3377:17;-1:-1:-1;;3373:31:120;3361:44;;;;3357:53;;;-1:-1:-1;3468:12:120;;;;3433:15;;;;2833:1;2824:11;2791:699;;;-1:-1:-1;3507:6:120;;2251:1268;-1:-1:-1;;;;;;;;2251:1268:120:o;3524:380::-;3603:1;3599:12;;;;3646;;;3667:61;;3721:4;3713:6;3709:17;3699:27;;3667:61;3774:2;3766:6;3763:14;3743:18;3740:38;3737:161;;;3820:10;3815:3;3811:20;3808:1;3801:31;3855:4;3852:1;3845:15;3883:4;3880:1;3873:15;3737:161;;3524:380;;;:::o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"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[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/out/StdJson.sol/stdJson.json b/out/StdJson.sol/stdJson.json new file mode 100644 index 00000000..fd5827b6 --- /dev/null +++ b/out/StdJson.sol/stdJson.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122007010e40e6bd71bb7dd8cd3db4e76f07c54414eb220439cddf8b95d08ff850e964736f6c634300080c0033","sourceMap":"830:5374:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;830:5374:27;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122007010e40e6bd71bb7dd8cd3db4e76f07c54414eb220439cddf8b95d08ff850e964736f6c634300080c0033","sourceMap":"830:5374:27:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/StdMath.sol/stdMath.json b/out/StdMath.sol/stdMath.json new file mode 100644 index 00000000..02ee4448 --- /dev/null +++ b/out/StdMath.sol/stdMath.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cb1ef4e2f20cd0c61e96e808d20f1769e94016826ad6271508c04767d3b289c64736f6c634300080c0033","sourceMap":"65:1294:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:1294:28;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201cb1ef4e2f20cd0c61e96e808d20f1769e94016826ad6271508c04767d3b289c64736f6c634300080c0033","sourceMap":"65:1294:28:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file diff --git a/out/StdStorage.sol/stdStorage.json b/out/StdStorage.sol/stdStorage.json new file mode 100644 index 00000000..43cd60cb --- /dev/null +++ b/out/StdStorage.sol/stdStorage.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204cc2dd5aee9a5dacec7e6d7429883718490c2bdf5511713ab819e9b6bb59082864736f6c634300080c0033","sourceMap":"7339:4527:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;7339:4527:29;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204cc2dd5aee9a5dacec7e6d7429883718490c2bdf5511713ab819e9b6bb59082864736f6c634300080c0033","sourceMap":"7339:4527:29:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file diff --git a/out/StdStorage.sol/stdStorageSafe.json b/out/StdStorage.sol/stdStorageSafe.json new file mode 100644 index 00000000..d40d025d --- /dev/null +++ b/out/StdStorage.sol/stdStorageSafe.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bf07c17c6abf8551c858869f5be375323d54710f95cc62e7a9a00d4ac88a2d64736f6c634300080c0033","sourceMap":"368:6969:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;368:6969:29;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bf07c17c6abf8551c858869f5be375323d54710f95cc62e7a9a00d4ac88a2d64736f6c634300080c0033","sourceMap":"368:6969:29:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file diff --git a/out/StdStyle.sol/StdStyle.json b/out/StdStyle.sol/StdStyle.json new file mode 100644 index 00000000..2d3ce953 --- /dev/null +++ b/out/StdStyle.sol/StdStyle.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5906f252492aec841f3d06b9a514f1b94f946811c599c7cc14e455571a5e8c264736f6c634300080c0033","sourceMap":"96:10353:30:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;96:10353:30;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5906f252492aec841f3d06b9a514f1b94f946811c599c7cc14e455571a5e8c264736f6c634300080c0033","sourceMap":"96:10353:30:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/out/StdUtils.sol/StdUtils.json b/out/StdUtils.sol/StdUtils.json new file mode 100644 index 00000000..8f427d76 --- /dev/null +++ b/out/StdUtils.sol/StdUtils.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/out/StorageSlot.sol/StorageSlot.json b/out/StorageSlot.sol/StorageSlot.json new file mode 100644 index 00000000..0868b036 --- /dev/null +++ b/out/StorageSlot.sol/StorageSlot.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056dc68de5a25a3772802d58577816d846c51a92c28e4ec82ddd59207833b49da64736f6c634300080c0033","sourceMap":"1279:1391:53:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1279:1391:53;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056dc68de5a25a3772802d58577816d846c51a92c28e4ec82ddd59207833b49da64736f6c634300080c0033","sourceMap":"1279:1391:53:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ``` contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":"StorageSlot"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"}},"version":1},"id":53} \ No newline at end of file diff --git a/out/Strings.sol/Strings.json b/out/Strings.sol/Strings.json new file mode 100644 index 00000000..3dab4733 --- /dev/null +++ b/out/Strings.sol/Strings.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122019e72a1d351f672473ecb7b70519230770b445cf790b568a14f85d478ab10b8064736f6c634300080c0033","sourceMap":"161:2235:54:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;161:2235:54;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122019e72a1d351f672473ecb7b70519230770b445cf790b568a14f85d478ab10b8064736f6c634300080c0033","sourceMap":"161:2235:54:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":"Strings"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"}},"version":1},"id":54} \ No newline at end of file diff --git a/out/TestPrep.sol/TestPrep.json b/out/TestPrep.sol/TestPrep.json new file mode 100644 index 00000000..8ccd1829 --- /dev/null +++ b/out/TestPrep.sol/TestPrep.json @@ -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":"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":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b6109eb80620006516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063916a17c611610066578063916a17c6146100fb578063b5508aa914610103578063ba414fa61461010b578063e20c9f7114610123578063fa7626d41461012b57600080fd5b80631ed7831c146100a35780633e5e3c23146100c15780633f7286f4146100c957806366d9a9a0146100d157806385226c81146100e6575b600080fd5b6100ab610138565b6040516100b8919061075a565b60405180910390f35b6100ab61019a565b6100ab6101fa565b6100d961025a565b6040516100b891906107a7565b6100ee610349565b6040516100b8919061088a565b6100d9610419565b6100ee6104ff565b6101136105cf565b60405190151581526020016100b8565b6100ab6106fa565b6000546101139060ff1681565b6060600d80548060200260200160405190810160405280929190818152602001828054801561019057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610172575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561032857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102ea5790505b5050505050815250508152602001906001019061027e565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461038c90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546103b890610904565b80156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b50505050508152602001906001019061036d565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104e757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116104a95790505b5050505050815250508152602001906001019061043d565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461054290610904565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90610904565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505081526020019060010190610523565b60008054610100900460ff16156105ef5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156106f55760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161067d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161093f565b60408051601f198184030181529082905261069791610970565b6000604051808303816000865af19150503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b50915050808060200190518101906106f1919061098c565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561079b5783516001600160a01b031683529284019291840191600101610776565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561084b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156108365783516001600160e01b0319168252928b019260019290920191908b019061080c565b50978a019795505050918701916001016107cf565b50919998505050505050505050565b60005b8381101561087557818101518382015260200161085d565b83811115610884576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156108f757878503603f19018452815180518087526108d8818989018a850161085a565b601f01601f1916959095018601945092850192908501906001016108b1565b5092979650505050505050565b600181811c9082168061091857607f821691505b6020821081141561093957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061096281600485016020870161085a565b919091016004019392505050565b6000825161098281846020870161085a565b9190910192915050565b60006020828403121561099e57600080fd5b815180151581146109ae57600080fd5b939250505056fea26469706673582212201e7822eaede0d8e1a0db0821173dfba207b6d189aa57b60debfbe089da3c4fd964736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;142:2448:115;2329:22:116;;142:2448:115;2329:22:116;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;142:2448:115;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;142:2448:115:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;142:2448:115;;;-1:-1:-1;142:2448:115;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;142:2448:115;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063916a17c611610066578063916a17c6146100fb578063b5508aa914610103578063ba414fa61461010b578063e20c9f7114610123578063fa7626d41461012b57600080fd5b80631ed7831c146100a35780633e5e3c23146100c15780633f7286f4146100c957806366d9a9a0146100d157806385226c81146100e6575b600080fd5b6100ab610138565b6040516100b8919061075a565b60405180910390f35b6100ab61019a565b6100ab6101fa565b6100d961025a565b6040516100b891906107a7565b6100ee610349565b6040516100b8919061088a565b6100d9610419565b6100ee6104ff565b6101136105cf565b60405190151581526020016100b8565b6100ab6106fa565b6000546101139060ff1681565b6060600d80548060200260200160405190810160405280929190818152602001828054801561019057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610172575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561032857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102ea5790505b5050505050815250508152602001906001019061027e565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461038c90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546103b890610904565b80156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b50505050508152602001906001019061036d565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104e757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116104a95790505b5050505050815250508152602001906001019061043d565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461054290610904565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90610904565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505081526020019060010190610523565b60008054610100900460ff16156105ef5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156106f55760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161067d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161093f565b60408051601f198184030181529082905261069791610970565b6000604051808303816000865af19150503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b50915050808060200190518101906106f1919061098c565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561079b5783516001600160a01b031683529284019291840191600101610776565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561084b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156108365783516001600160e01b0319168252928b019260019290920191908b019061080c565b50978a019795505050918701916001016107cf565b50919998505050505050505050565b60005b8381101561087557818101518382015260200161085d565b83811115610884576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156108f757878503603f19018452815180518087526108d8818989018a850161085a565b601f01601f1916959095018601945092850192908501906001016108b1565b5092979650505050505050565b600181811c9082168061091857607f821691505b6020821081141561093957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061096281600485016020870161085a565b919091016004019392505050565b6000825161098281846020870161085a565b9190910192915050565b60006020828403121561099e57600080fd5b815180151581146109ae57600080fd5b939250505056fea26469706673582212201e7822eaede0d8e1a0db0821173dfba207b6d189aa57b60debfbe089da3c4fd964736f6c634300080c0033","sourceMap":"142:2448:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3685:14:120;;3678:22;3660:41;;3648:2;3633:18;1819:584:20;3520:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;2161:134:26;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;4271:51:120;;;-1:-1:-1;;;4338:18:120;;;4331:34;2196:43:20;;;;;;;;;4244:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;2499:1;2490:6;2485:3;2481:16;2474:27;2455:48;;2251:258;;;:::o;2514:1001::-;2676:4;2705:2;2745;2734:9;2730:18;2775:2;2764:9;2757:21;2798:6;2833;2827:13;2864:6;2856;2849:22;2902:2;2891:9;2887:18;2880:25;;2964:2;2954:6;2951:1;2947:14;2936:9;2932:30;2928:39;2914:53;;3002:2;2994:6;2990:15;3023:1;3033:453;3047:6;3044:1;3041:13;3033:453;;;3112:22;;;-1:-1:-1;;3108:36:120;3096:49;;3168:13;;3210:9;;3232:24;;;3269:61;3210:9;3304:15;;;3291:11;;;3269:61;:::i;:::-;3396:2;3373:17;-1:-1:-1;;3369:31:120;3357:44;;;;3353:53;;;-1:-1:-1;3464:12:120;;;;3429:15;;;;3069:1;3062:9;3033:453;;;-1:-1:-1;3503:6:120;;2514:1001;-1:-1:-1;;;;;;;2514:1001:120:o;3712:380::-;3791:1;3787:12;;;;3834;;;3855:61;;3909:4;3901:6;3897:17;3887:27;;3855:61;3962:2;3954:6;3951:14;3931:18;3928:38;3925:161;;;4008:10;4003:3;3999:20;3996:1;3989:31;4043:4;4040:1;4033:15;4071:4;4068:1;4061:15;3925:161;;3712:380;;;:::o;4376:371::-;-1:-1:-1;;;;;;4561:33:120;;4549:46;;4618:13;;4531:3;;4640:61;4618:13;4690:1;4681:11;;4674:4;4662:17;;4640:61;:::i;:::-;4721:16;;;;4739:1;4717:24;;4376:371;-1:-1:-1;;;4376:371:120:o;4752:274::-;4881:3;4919:6;4913:13;4935:53;4981:6;4976:3;4969:4;4961:6;4957:17;4935:53;:::i;:::-;5004:16;;;;;4752:274;-1:-1:-1;;4752:274:120:o;5031:277::-;5098:6;5151:2;5139:9;5130:7;5126:23;5122:32;5119:52;;;5167:1;5164;5157:12;5119:52;5199:9;5193:16;5252:5;5245:13;5238:21;5231:5;5228:32;5218:60;;5274:1;5271;5264:12;5218:60;5297:5;5031:277;-1:-1:-1;;;5031:277:120:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/utility/TestPrep.sol\":\"TestPrep\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/TestPrep.sol\":{\"keccak256\":\"0xe9db9f37b70f6630b5405a0a092fa9d22c8d8d84883026aea4aebd50910f6eaa\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0cafeb108d49f553a0a6c0cd674fe48b88a1709e14e6e499c9bf8782a8c6db3c\",\"dweb:/ipfs/Qmawk5WvJS5t5UABHZ4wYp6Ep2CgVsktdaQxGxPwZk1G5r\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"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[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/utility/TestPrep.sol":"TestPrep"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/TestPrep.sol":{"keccak256":"0xe9db9f37b70f6630b5405a0a092fa9d22c8d8d84883026aea4aebd50910f6eaa","urls":["bzz-raw://0cafeb108d49f553a0a6c0cd674fe48b88a1709e14e6e499c9bf8782a8c6db3c","dweb:/ipfs/Qmawk5WvJS5t5UABHZ4wYp6Ep2CgVsktdaQxGxPwZk1G5r"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":115} \ No newline at end of file diff --git a/out/TestStorage.sol/TestStorage.json b/out/TestStorage.sol/TestStorage.json new file mode 100644 index 00000000..9fb5b419 --- /dev/null +++ b/out/TestStorage.sol/TestStorage.json @@ -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":"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":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorsStakesUpdated","inputs":[{"name":"operatorsPerQuorum","type":"address[][]","indexed":true,"internalType":"address[][]"},{"name":"quorumNumbers","type":"bytes","indexed":true,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RemovePolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SetPolicy","inputs":[{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"policy","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrategyAdded","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyRemoved","inputs":[{"name":"strategy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TaskExecuted","inputs":[{"name":"taskHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600a60809081526930b3b3b932b3b0ba37b960b11b60a052620000449062000364565b602d80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600881526737b832b930ba37b960c11b60208201526200008e9062000364565b602e80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600a8152693930b73237b6a0b2323960b11b6020820152620000da9062000364565b602f80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e7374726174656779416464724f6e6560881b60208201526200012b9062000364565b603080546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e73747261746567794164647254776f60881b60208201526200017c9062000364565b603180546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600581526437bbb732b960d91b6020820152620001c39062000364565b603280546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b37b832b930ba37b920b2323960a11b6020820152620002119062000364565b603380546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600f81526e37b832b930ba37b92a3bb7a0b2323960891b6020820152620002629062000364565b603480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600781526639b630b9b432b960c91b6020820152620002ab9062000364565b603580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d706175736572526567697374727960901b6020820152620002fb9062000364565b603680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b8082526a746573742d706f6c69637960a81b60209092019182526200034f9160449162000497565b503480156200035d57600080fd5b5062000641565b6000620003718262000378565b5092915050565b600080826040516020016200038e919062000570565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200058e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906200045e9085908790600401620005c0565b600060405180830381600087803b1580156200047957600080fd5b505af11580156200048e573d6000803e3d6000fd5b50505050915091565b828054620004a59062000604565b90600052602060002090601f016020900481019282620004c9576000855562000514565b82601f10620004e457805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000514578251825591602001919060010190620004f7565b506200052292915062000526565b5090565b5b8082111562000522576000815560010162000527565b60005b838110156200055a57818101518382015260200162000540565b838111156200056a576000848401525b50505050565b60008251620005848184602087016200053d565b9190910192915050565b600060208284031215620005a157600080fd5b81516001600160a01b0381168114620005b957600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620005ef8160608501602087016200053d565b601f01601f1916919091016060019392505050565b600181811c908216806200061957607f821691505b602082108114156200063b57634e487b7160e01b600052602260045260246000fd5b50919050565b6109eb80620006516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063916a17c611610066578063916a17c6146100fb578063b5508aa914610103578063ba414fa61461010b578063e20c9f7114610123578063fa7626d41461012b57600080fd5b80631ed7831c146100a35780633e5e3c23146100c15780633f7286f4146100c957806366d9a9a0146100d157806385226c81146100e6575b600080fd5b6100ab610138565b6040516100b8919061075a565b60405180910390f35b6100ab61019a565b6100ab6101fa565b6100d961025a565b6040516100b891906107a7565b6100ee610349565b6040516100b8919061088a565b6100d9610419565b6100ee6104ff565b6101136105cf565b60405190151581526020016100b8565b6100ab6106fa565b6000546101139060ff1681565b6060600d80548060200260200160405190810160405280929190818152602001828054801561019057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610172575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561032857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102ea5790505b5050505050815250508152602001906001019061027e565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461038c90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546103b890610904565b80156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b50505050508152602001906001019061036d565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104e757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116104a95790505b5050505050815250508152602001906001019061043d565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461054290610904565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90610904565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505081526020019060010190610523565b60008054610100900460ff16156105ef5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156106f55760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161067d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161093f565b60408051601f198184030181529082905261069791610970565b6000604051808303816000865af19150503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b50915050808060200190518101906106f1919061098c565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561079b5783516001600160a01b031683529284019291840191600101610776565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561084b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156108365783516001600160e01b0319168252928b019260019290920191908b019061080c565b50978a019795505050918701916001016107cf565b50919998505050505050505050565b60005b8381101561087557818101518382015260200161085d565b83811115610884576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156108f757878503603f19018452815180518087526108d8818989018a850161085a565b601f01601f1916959095018601945092850192908501906001016108b1565b5092979650505050505050565b600181811c9082168061091857607f821691505b6020821081141561093957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061096281600485016020870161085a565b919091016004019392505050565b6000825161098281846020870161085a565b9190910192915050565b60006020828403121561099e57600080fd5b815180151581146109ae57600080fd5b939250505056fea264697066735822122083d409b2e1452b044e7a725adc4f60ce71bedafa2f3f261263b069b4ef57d0bd64736f6c634300080c0033","sourceMap":"1572:26:20:-:0;;;1594:4;-1:-1:-1;;1572:26:20;;;;;;;;3161:44:23;;;;;;;;;;;2329:22:116;1090:2151;2329:22;;1090:2151;2329:22;;;-1:-1:-1;;;2329:22:116;;;;:8;:22::i;:::-;2308:43;;;-1:-1:-1;;;;;;2308:43:116;-1:-1:-1;;;;;2308:43:116;;;;;;;;;;2376:20;;;;;;;;;;;;-1:-1:-1;;;2376:20:116;;;;;;:8;:20::i;:::-;2357:39;;;-1:-1:-1;;;;;;2357:39:116;-1:-1:-1;;;;;2357:39:116;;;;;;;;;;2423:22;;;;;;;;;;;;-1:-1:-1;;;2423:22:116;;;;;;:8;:22::i;:::-;2402:43;;;-1:-1:-1;;;;;;2402:43:116;-1:-1:-1;;;;;2402:43:116;;;;;;;;;;2477:27;;;;;;;;;;;;-1:-1:-1;;;2477:27:116;;;;;;:8;:27::i;:::-;2451:53;;;-1:-1:-1;;;;;;2451:53:116;-1:-1:-1;;;;;2451:53:116;;;;;;;;;;2536:27;;;;;;;;;;;;-1:-1:-1;;;2536:27:116;;;;;;:8;:27::i;:::-;2510:53;;;-1:-1:-1;;;;;;2510:53:116;-1:-1:-1;;;;;2510:53:116;;;;;;;;;;2585:17;;;;;;;;;;;;-1:-1:-1;;;2585:17:116;;;;;;:8;:17::i;:::-;2569:33;;;-1:-1:-1;;;;;;2569:33:116;-1:-1:-1;;;;;2569:33:116;;;;;;;;;;2631:24;;;;;;;;;;;;-1:-1:-1;;;2631:24:116;;;;;;:8;:24::i;:::-;2608:47;;;-1:-1:-1;;;;;;2608:47:116;-1:-1:-1;;;;;2608:47:116;;;;;;;;;;2687:27;;;;;;;;;;;;-1:-1:-1;;;2687:27:116;;;;;;:8;:27::i;:::-;2661:53;;;-1:-1:-1;;;;;;2661:53:116;-1:-1:-1;;;;;2661:53:116;;;;;;;;;;2738:19;;;;;;;;;;;;-1:-1:-1;;;2738:19:116;;;;;;:8;:19::i;:::-;2720:37;;;-1:-1:-1;;;;;;2720:37:116;-1:-1:-1;;;;;2720:37:116;;;;;;;;;;2788:26;;;;;;;;;;;;-1:-1:-1;;;2788:26:116;;;;;;:8;:26::i;:::-;2763:51;;;-1:-1:-1;;;;;;2763:51:116;-1:-1:-1;;;;;2763:51:116;;;;;;;;;;3207:31;;;;;;;;;;;;;-1:-1:-1;;;3207:31:116;;;;;;;;;;;;:::i;:::-;;1090:2151;;;;;;;;;;;;16415:125:24;16479:12;16513:20;16528:4;16513:14;:20::i;:::-;-1:-1:-1;16503:30:24;16415:125;-1:-1:-1;;16415:125:24:o;16134:242::-;16204:12;16218:18;16296:4;16279:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16279:22:24;;;;;;;16269:33;;16279:22;16269:33;;;;-1:-1:-1;;;;;;16320:19:24;;;;;704:25:120;;;16269:33:24;-1:-1:-1;16320:7:24;;;;677:18:120;;16320:19:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16349:20;;-1:-1:-1;;;16349:20:24;;16313:26;;-1:-1:-1;16349:8:24;;;;:20;;16313:26;;16364:4;;16349:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16134:242;;;:::o;1090:2151:116:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1090:2151:116;;;-1:-1:-1;1090:2151:116;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:258:120;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:276::-;408:3;446:6;440:13;462:53;508:6;503:3;496:4;488:6;484:17;462:53;:::i;:::-;531:16;;;;;277:276;-1:-1:-1;;277:276:120:o;740:290::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;905:16;;-1:-1:-1;;;;;950:31:120;;940:42;;930:70;;996:1;993;986:12;930:70;1019:5;740:290;-1:-1:-1;;;740:290:120:o;1035:480::-;1241:1;1237;1232:3;1228:11;1224:19;1216:6;1212:32;1201:9;1194:51;1281:2;1276;1265:9;1261:18;1254:30;1175:4;1313:6;1307:13;1356:6;1351:2;1340:9;1336:18;1329:34;1372:66;1431:6;1426:2;1415:9;1411:18;1406:2;1398:6;1394:15;1372:66;:::i;:::-;1499:2;1478:15;-1:-1:-1;;1474:29:120;1459:45;;;;1506:2;1455:54;;1035:480;-1:-1:-1;;;1035:480:120:o;1520:380::-;1599:1;1595:12;;;;1642;;;1663:61;;1717:4;1709:6;1705:17;1695:27;;1663:61;1770:2;1762:6;1759:14;1739:18;1736:38;1733:161;;;1816:10;1811:3;1807:20;1804:1;1797:31;1851:4;1848:1;1841:15;1879:4;1876:1;1869:15;1733:161;;1520:380;;;:::o;:::-;1090:2151:116;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063916a17c611610066578063916a17c6146100fb578063b5508aa914610103578063ba414fa61461010b578063e20c9f7114610123578063fa7626d41461012b57600080fd5b80631ed7831c146100a35780633e5e3c23146100c15780633f7286f4146100c957806366d9a9a0146100d157806385226c81146100e6575b600080fd5b6100ab610138565b6040516100b8919061075a565b60405180910390f35b6100ab61019a565b6100ab6101fa565b6100d961025a565b6040516100b891906107a7565b6100ee610349565b6040516100b8919061088a565b6100d9610419565b6100ee6104ff565b6101136105cf565b60405190151581526020016100b8565b6100ab6106fa565b6000546101139060ff1681565b6060600d80548060200260200160405190810160405280929190818152602001828054801561019057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610172575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561032857602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102ea5790505b5050505050815250508152602001906001019061027e565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461038c90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546103b890610904565b80156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b50505050508152602001906001019061036d565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156103405760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104e757602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116104a95790505b5050505050815250508152602001906001019061043d565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561034057838290600052602060002001805461054290610904565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90610904565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505081526020019060010190610523565b60008054610100900460ff16156105ef5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156106f55760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909161067d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161093f565b60408051601f198184030181529082905261069791610970565b6000604051808303816000865af19150503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b50915050808060200190518101906106f1919061098c565b9150505b919050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610190576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610172575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561079b5783516001600160a01b031683529284019291840191600101610776565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561084b57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156108365783516001600160e01b0319168252928b019260019290920191908b019061080c565b50978a019795505050918701916001016107cf565b50919998505050505050505050565b60005b8381101561087557818101518382015260200161085d565b83811115610884576000848401525b50505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156108f757878503603f19018452815180518087526108d8818989018a850161085a565b601f01601f1916959095018601945092850192908501906001016108b1565b5092979650505050505050565b600181811c9082168061091857607f821691505b6020821081141561093957634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160e01b031983168152815160009061096281600485016020870161085a565b919091016004019392505050565b6000825161098281846020870161085a565b9190910192915050565b60006020828403121561099e57600080fd5b815180151581146109ae57600080fd5b939250505056fea264697066735822122083d409b2e1452b044e7a725adc4f60ce71bedafa2f3f261263b069b4ef57d0bd64736f6c634300080c0033","sourceMap":"1090:2151:116:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;1819:584:20:-;;;:::i;:::-;;;3685:14:120;;3678:22;3660:41;;3648:2;3633:18;1819:584:20;3520:187:120;2013:142:26;;;:::i;1572:26:20:-;;;;;;;;;2161:134:26;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:26;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:26;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:26;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:20;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;4271:51:120;;;-1:-1:-1;;;4338:18:120;;;4331:34;2196:43:20;;;;;;;;;4244:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;2013:142:26:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:26;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;14:658:120:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:120;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:120;;14:658;-1:-1:-1;;;;;;14:658:120:o;677:1569::-;881:4;910:2;950;939:9;935:18;980:2;969:9;962:21;1003:6;1038;1032:13;1069:6;1061;1054:22;1095:2;1085:12;;1128:2;1117:9;1113:18;1106:25;;1190:2;1180:6;1177:1;1173:14;1162:9;1158:30;1154:39;1228:2;1220:6;1216:15;1249:1;1270;1280:937;1296:6;1291:3;1288:15;1280:937;;;1365:22;;;-1:-1:-1;;1361:36:120;1349:49;;1421:13;;1508:9;;-1:-1:-1;;;;;1504:35:120;1489:51;;1579:11;;1573:18;1611:15;;;1604:27;;;1692:19;;1461:15;;;1724:24;;;1814:21;;;;1859:1;;1782:2;1770:15;;;1873:236;1889:8;1884:3;1881:17;1873:236;;;1970:15;;-1:-1:-1;;;;;;1966:42:120;1952:57;;2078:17;;;;1917:1;1908:11;;;;;2035:14;;;;1873:236;;;-1:-1:-1;2195:12:120;;;;2132:5;-1:-1:-1;;;2160:15:120;;;;1322:1;1313:11;1280:937;;;-1:-1:-1;2234:6:120;;677:1569;-1:-1:-1;;;;;;;;;677:1569:120:o;2251:258::-;2323:1;2333:113;2347:6;2344:1;2341:13;2333:113;;;2423:11;;;2417:18;2404:11;;;2397:39;2369:2;2362:10;2333:113;;;2464:6;2461:1;2458:13;2455:48;;;2499:1;2490:6;2485:3;2481:16;2474:27;2455:48;;2251:258;;;:::o;2514:1001::-;2676:4;2705:2;2745;2734:9;2730:18;2775:2;2764:9;2757:21;2798:6;2833;2827:13;2864:6;2856;2849:22;2902:2;2891:9;2887:18;2880:25;;2964:2;2954:6;2951:1;2947:14;2936:9;2932:30;2928:39;2914:53;;3002:2;2994:6;2990:15;3023:1;3033:453;3047:6;3044:1;3041:13;3033:453;;;3112:22;;;-1:-1:-1;;3108:36:120;3096:49;;3168:13;;3210:9;;3232:24;;;3269:61;3210:9;3304:15;;;3291:11;;;3269:61;:::i;:::-;3396:2;3373:17;-1:-1:-1;;3369:31:120;3357:44;;;;3353:53;;;-1:-1:-1;3464:12:120;;;;3429:15;;;;3069:1;3062:9;3033:453;;;-1:-1:-1;3503:6:120;;2514:1001;-1:-1:-1;;;;;;;2514:1001:120:o;3712:380::-;3791:1;3787:12;;;;3834;;;3855:61;;3909:4;3901:6;3897:17;3887:27;;3855:61;3962:2;3954:6;3951:14;3931:18;3928:38;3925:161;;;4008:10;4003:3;3999:20;3996:1;3989:31;4043:4;4040:1;4033:15;4071:4;4068:1;4061:15;3925:161;;3712:380;;;:::o;4376:371::-;-1:-1:-1;;;;;;4561:33:120;;4549:46;;4618:13;;4531:3;;4640:61;4618:13;4690:1;4681:11;;4674:4;4662:17;;4640:61;:::i;:::-;4721:16;;;;4739:1;4717:24;;4376:371;-1:-1:-1;;;4376:371:120:o;4752:274::-;4881:3;4919:6;4913:13;4935:53;4981:6;4976:3;4969:4;4961:6;4957:17;4935:53;:::i;:::-;5004:16;;;;;4752:274;-1:-1:-1;;4752:274:120:o;5031:277::-;5098:6;5151:2;5139:9;5130:7;5126:23;5122:32;5119:52;;;5167:1;5164;5157:12;5119:52;5199:9;5193:16;5252:5;5245:13;5238:21;5231:5;5228:32;5218:60;;5274:1;5271;5264:12;5218:60;5297:5;5031:277;-1:-1:-1;;;5031:277:120:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address[][]\",\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"OperatorsStakesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"RemovePolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"policy\",\"type\":\"string\"}],\"name\":\"SetPolicy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"taskHash\",\"type\":\"bytes32\"}],\"name\":\"TaskExecuted\",\"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\":\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/utility/TestStorage.sol\":\"TestStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c\",\"dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f\",\"dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF\"]},\"src/ServiceManager.sol\":{\"keccak256\":\"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957\",\"dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq\"]},\"src/interfaces/IPredicateClient.sol\":{\"keccak256\":\"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb\",\"dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f\",\"dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ\"]},\"src/mixins/PredicateClient.sol\":{\"keccak256\":\"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1\",\"dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy\"]},\"test/helpers/MockClient.sol\":{\"keccak256\":\"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad\",\"dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq\"]},\"test/helpers/MockDelegationManager.sol\":{\"keccak256\":\"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719\",\"urls\":[\"bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e\",\"dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa\"]},\"test/helpers/MockEigenPodManager.sol\":{\"keccak256\":\"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b\",\"dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH\"]},\"test/helpers/MockProxy.sol\":{\"keccak256\":\"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052\",\"dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX\"]},\"test/helpers/MockProxyAdmin.sol\":{\"keccak256\":\"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1\",\"dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU\"]},\"test/helpers/MockStakeRegistry.sol\":{\"keccak256\":\"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7\",\"dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ\"]},\"test/helpers/MockStrategyManager.sol\":{\"keccak256\":\"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9\",\"dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D\"]},\"test/helpers/eigenlayer/BeaconChainProofs.sol\":{\"keccak256\":\"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7\",\"dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5\"]},\"test/helpers/eigenlayer/DelegationManager.sol\":{\"keccak256\":\"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48\",\"dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR\"]},\"test/helpers/eigenlayer/DelegationManagerStorage.sol\":{\"keccak256\":\"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9\",\"dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw\"]},\"test/helpers/eigenlayer/EIP1271SignatureUtils.sol\":{\"keccak256\":\"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508\",\"dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8\"]},\"test/helpers/eigenlayer/Endian.sol\":{\"keccak256\":\"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198\",\"dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd\"]},\"test/helpers/eigenlayer/Merkle.sol\":{\"keccak256\":\"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31\",\"dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv\"]},\"test/helpers/eigenlayer/Pausable.sol\":{\"keccak256\":\"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434\",\"dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov\"]},\"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e\",\"dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1\"]},\"test/helpers/eigenlayer/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb\",\"dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc\"]},\"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190\",\"dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr\"]},\"test/helpers/eigenlayer/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41\",\"dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8\"]},\"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f\",\"dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe\"]},\"test/helpers/eigenlayer/interfaces/IPausable.sol\":{\"keccak256\":\"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939\",\"dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX\"]},\"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe\",\"dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc\"]},\"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c\",\"dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk\"]},\"test/helpers/eigenlayer/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a\",\"dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8\"]},\"test/helpers/eigenlayer/interfaces/IStrategy.sol\":{\"keccak256\":\"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316\",\"dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT\"]},\"test/helpers/eigenlayer/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06\",\"dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s\"]},\"test/helpers/utility/TestStorage.sol\":{\"keccak256\":\"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d\",\"dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRemoved","anonymous":false},{"inputs":[{"internalType":"address[][]","name":"operatorsPerQuorum","type":"address[][]","indexed":true},{"internalType":"bytes","name":"quorumNumbers","type":"bytes","indexed":true}],"type":"event","name":"OperatorsStakesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"RemovePolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"client","type":"address","indexed":true},{"internalType":"string","name":"policy","type":"string","indexed":true}],"type":"event","name":"SetPolicy","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"strategy","type":"address","indexed":true}],"type":"event","name":"StrategyRemoved","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32","indexed":true}],"type":"event","name":"TaskExecuted","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":"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[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/utility/TestStorage.sol":"TestStorage"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673","urls":["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2","dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol":{"keccak256":"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544","urls":["bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e","dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x33b8603bfbef7f33d9308b79c79aa3db7eb19525fd1addd764285e834ca275d7","urls":["bzz-raw://0ada1f59ac012751561c8fa066bddf1a8fb518fcb0ea2d64920797c1711aad0c","dweb:/ipfs/QmTrY13qevgKDUAyQhFvMNLvbLuWaQprvDzvLdXWQwnoxA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x84ac2d2f343df1e683da7a12bbcf70db542a7a7a0cea90a5d70fcb5e5d035481","urls":["bzz-raw://73ae8e0c6f975052973265113d762629002ce33987b1933c2a378667e2816f2f","dweb:/ipfs/QmQAootkVfoe4PLaYbT4Xob2dJRm3bZfbCffEHRbCYXNPF"],"license":"MIT"},"src/ServiceManager.sol":{"keccak256":"0xfc51291e2d154cfe9ced0386004471f9b542fbf48a7257515e6f1c08fa3a664f","urls":["bzz-raw://14e3d1a98a91d1cbe58c4936723079ac82895fe6fc9b7bb0b7a39ef5fefae957","dweb:/ipfs/QmdJMpkK8DsZ3yrc7uyw8u7ysTysi83m8bB8SZAYuPyRXq"],"license":"BUSL-1.1"},"src/interfaces/IPredicateClient.sol":{"keccak256":"0x650adc6991fd026922606cdb788065f310f3d099586418a6be261936dff3adae","urls":["bzz-raw://33a5ba749b7a24c8e050c825dabd93de5b48e6c2c258780792f4bae6f5a28bbb","dweb:/ipfs/QmQLeaR7DUishbBoz7m3foGHdJ9bq2jPzSUtXMiUkoeGjE"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x8349c826f5457812f9837788e2b83286a147559e268a7055d538028cdb69c37a","urls":["bzz-raw://c6433c77e40ad36daa113250a5fc8fc3eaf47b15720b469973925298b72ed28f","dweb:/ipfs/QmZqBP3i6hPevGfAKcLbXgZmTfj2jn2dsUUGAPwwsQtnWQ"],"license":"BUSL-1.1"},"src/mixins/PredicateClient.sol":{"keccak256":"0x6066bde57e1c0f4d8a8f77e18af5b4f16d2bce2431dc377672bdafd70884c657","urls":["bzz-raw://f16ab1e888fef4a8774420439b5f054e9eb77ff64aabb745c67cc3f5b408ecc1","dweb:/ipfs/QmRCMeBmcPYKE76sgiWsbeAzXaSg2r1xK1gebQWSpwMWmy"],"license":"MIT"},"test/helpers/MockClient.sol":{"keccak256":"0xc0248e9c1914e48f8e9d0de0feacaa92042d2266789e3f98d3d21314089c8192","urls":["bzz-raw://072b9bd8d8f48d176afde37a39981a32662972bfaa32b877613d80e22c34b3ad","dweb:/ipfs/QmQjBgVuwnXxzChSEFh1ZJ9NjiX8xiia6gxYMcpqextEqq"],"license":"MIT"},"test/helpers/MockDelegationManager.sol":{"keccak256":"0x3ec81d91e5a0d033fd63bcf1cb2a042e74d8a4981d3e8961a06b4729556ed719","urls":["bzz-raw://747fce63c55f1a5cd18247cac665c173c1daa77194a58c7d4fbc87e607a1941e","dweb:/ipfs/QmbpvvsSWB195bG4FN8E7N6oiDSxV6if6kuB5CEUgRaDUa"],"license":null},"test/helpers/MockEigenPodManager.sol":{"keccak256":"0xb2e3bc8b9e43d3ddd8040fa363fd37d09476d3713c0bb0f9afa37967b32f4d16","urls":["bzz-raw://4a495d5d438a2bbda09c8e95d376154b8d7a01d036d1df12fafb85b7937b022b","dweb:/ipfs/QmYDzmjEn18ZYv3mFeu4PqP25GzDWFzryjM9Uuq1f9RWyH"],"license":"MIT"},"test/helpers/MockProxy.sol":{"keccak256":"0x2f8d34fa5fb5f2e598510858d51067dabd42289301ae7a5fd964452bc84cd329","urls":["bzz-raw://4137b577b8ede6a54c4b66723a20981e9e9d0797d28c3c20481fda39af076052","dweb:/ipfs/QmUYm1kKTXS4QNfzvaD6xtwbb7aonjbrfXW5iYAB9onzXX"],"license":"MIT"},"test/helpers/MockProxyAdmin.sol":{"keccak256":"0xa22ae83bea258f1575f3de580c041ce9cb77c0bdae91521b591bf92755e10901","urls":["bzz-raw://4d04e7a223d236186dbd61f07ec1053ee6c39c47c3842659367b46d9ae0dd4d1","dweb:/ipfs/QmRkDaXf3u7F671KkCsv46XkwfFa8W83pTXsgSdveiw9gU"],"license":"MIT"},"test/helpers/MockStakeRegistry.sol":{"keccak256":"0x403246aeceb1e7c0ae954439ed6f3d1e4efe7c64520c91d768e371a201fe2054","urls":["bzz-raw://4f85546d6ae19412ae1e6855d76f6b3bf70256096153e107265f6d1e58a3eec7","dweb:/ipfs/QmULeVnM1nYxfahJqj7zy6g6MGXXtn25J9pXx5iBr6KXPQ"],"license":"MIT"},"test/helpers/MockStrategyManager.sol":{"keccak256":"0xb9581c066a20af753af17c1bb56f853371adad48f2731c2407daab305d9538ec","urls":["bzz-raw://e36df0dd7bc6cab49be2da419d0e8a1bd8bf8e48667770a6d5380a13c03d5de9","dweb:/ipfs/QmQBDunqduYEXByG86yevZ2R9yB5hQ4hjeHpjHjerGHX7D"],"license":"MIT"},"test/helpers/eigenlayer/BeaconChainProofs.sol":{"keccak256":"0xf05a78216a836b25929b5d83bf8419e98bcbf5860507f377007695ccc1712901","urls":["bzz-raw://6d7aba6075ba5709b7e63cd5589aa6a73f9f0423d2eb6f1ec15d1dcc680548e7","dweb:/ipfs/Qma24o2iXX6syXfLuAjVkWWgefiNE7Yp1kspX3Xwnvbch5"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManager.sol":{"keccak256":"0x8748ca8e5e962eafd7c34554b0c2c77c72819d997ced88795d52934ddc185dcb","urls":["bzz-raw://900f220e6b0f2bd7ec6a93e7eeedfd162120cccc2f9f09a2bdba8d7ecb986e48","dweb:/ipfs/QmSzQMhPPxdp98HYMGAFHssJScVHAbPJoPw3KSgdnJ3nAR"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/DelegationManagerStorage.sol":{"keccak256":"0x0dbbccd5d014795ecab9ca615156cd2e09790086583341e24c65f67369e8c10f","urls":["bzz-raw://35537a6f8f94f94717c59156041f33df6f3c887bf3378e6dd2c9a34f8dd2e3a9","dweb:/ipfs/QmdPNoVHZDiMVF5hJegVqfTWzazDRYuP9F3LxazVygQgqw"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/EIP1271SignatureUtils.sol":{"keccak256":"0x5c5999de11347a8afa11dde98b08a1809e012a602cd7600e36423de70e47d6ae","urls":["bzz-raw://09498f461ebf9b393449470a48ee62673ac7b2f0a78c026f123c24769321e508","dweb:/ipfs/QmRgDU4ZJPi4p1eFJb8kPGttNp2E4c4JezxMeTpcNHf6B8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Endian.sol":{"keccak256":"0x6dbe2e979af6e1fb094755cf42f6cc9c5ef01eb90e4d951e812229dcd6a7ffb6","urls":["bzz-raw://abbc4dc3619eb89707fbc94ab01dd91a494689194055cbd4003ec2e6401ca198","dweb:/ipfs/QmNo3etJWCMwudBAPaz34SY7wZfZsrYR95JBaZb39MJAAd"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Merkle.sol":{"keccak256":"0x117f00cae811378b255c219a7c902e9a10503a816606fc27f6ff1cc7ffd27f1c","urls":["bzz-raw://1e50fd6a7b7ba2cc72e5fce87b95303f9580bee657e047550be2ca2f97736d31","dweb:/ipfs/QmTaFxcrjgLCay4GpwwbX1kM4bYVkBVFSh3anqUUvZn1Cv"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/Pausable.sol":{"keccak256":"0x81abd9c3c4fdd5f4a843cac6fcc4cc070098a77136a98f4b3459924f43174ee0","urls":["bzz-raw://f5903f2187c3ffa92ed75204baea6fdcc16a905d6094a5a8b98f31ecd16d6434","dweb:/ipfs/QmS5WkRx4NsK5z67dq2qJ1ff15wTmdpncRbxz4GZmB4Tov"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x258ab23ca29cb45c0e891a30b09dd1d89f03d6cf0484802d38b495aac13ce7bd","urls":["bzz-raw://6b3fa2653e7b4d44aa5647cbc91fa9fa0b9bedc1de2e010e32168c0ee9b7d12e","dweb:/ipfs/QmRuaa9qyA37csx3y57L5fgnK11X5f9qCpu5xf9P4dRdA1"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IDelegationManager.sol":{"keccak256":"0x611ae699cdb3199d420a04b612eb019942d81d618991cd6d520c1326e552638d","urls":["bzz-raw://f709f0bd0b303e96296a53eb8abbc4633083baf6a67e896d4a5e83586b5ab5fb","dweb:/ipfs/QmRtKrYHSZjHwTWXu14h5T5xJYbtGYZEwndTa8GifaAwHc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol":{"keccak256":"0xde627552b5826d48aa533eb916809e71f5dde7d5e45e6776a5a0740551a32547","urls":["bzz-raw://d6ab110f680cd6296e31cbb453e416882e7ac421587799629048f90dbe22a190","dweb:/ipfs/QmQTHQ6SYbPZjDiDtPWya7oi9ERXhXF9uQVqip7HvvQ7Gr"],"license":"CC0-1.0"},"test/helpers/eigenlayer/interfaces/IEigenPod.sol":{"keccak256":"0x42e4664a40396f13b537324f2e2a9dde033d1b9ba2dfc011aa71c903fd84ee97","urls":["bzz-raw://f5b0abfdeed0c49d161ba1369c5f9cc763cc69b3ff106700c477e535cce4eb41","dweb:/ipfs/QmPTUJr1DgWJGaHT5aMCMcLuA6G68Kf7GjtaiEgBaHjXU8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol":{"keccak256":"0x79775853f121e1b9456c7b650967952dbecd46645d857151697cb81e47103a91","urls":["bzz-raw://ca2c2114558ab5143199155141f68f7126d0eec0c019e9e12fce69e519dbfc5f","dweb:/ipfs/QmTb1EaKMdZuAaFL91krPTpoJTJrZLe5srEjCo7VpVDVPe"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPausable.sol":{"keccak256":"0xefa2e2047d933621c8dd03ee9c455327c7af88734edad656118ce5483be7c373","urls":["bzz-raw://eda7b62bf881c164ff3bb084864d79e57fb11eda277b7c77c71892e7baac5939","dweb:/ipfs/QmccvX3CcwkWVZ3soxaQuJXAMWrTTQDCr8PYVKF5URewfX"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol":{"keccak256":"0xaead18fc1e33367e81247f38ca9abcfcc09ddb2d3389d4d00a66a6160cdfd131","urls":["bzz-raw://3425b1f671546026cabae697c16d16bc784e11531fce1a8101210a49851f91fe","dweb:/ipfs/QmawvHjU9M1u9C1cHPewYqNAiNJhcXwstXhPXa1ZS1NoMc"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol":{"keccak256":"0x141b9e361a6c8490c4cdf6c993fd84ec0c93fe10e832ef5d030f164c28f950cf","urls":["bzz-raw://303ed39f34f08f3f680c80c824ab39af4fd64d1b6e1e991c94de195b865b874c","dweb:/ipfs/QmX4fxjM6LBKn5caCB3DfQyUR2Lm6ySErAZfKcuFzFpyvk"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/ISlasher.sol":{"keccak256":"0x7652d38bfed3043c8cf9e8c4efa0d386147eeb8e4dc40f58369f637d7315197c","urls":["bzz-raw://1da335cfeeac90b7698b5171e5a6501708421516e7824ef892fe6b48bc37289a","dweb:/ipfs/Qmf8bEcETRypb1ND3NPgwVfsTJSYaeDm3BuRyVCXvq53U8"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategy.sol":{"keccak256":"0x004a06224ff195a7d48729b60b1657cd7eb1b288b568d5597bdd2c1ef96b0146","urls":["bzz-raw://283fdb7aac0cf2a4b8b08512801b13b2301e2ce86c1c85f4be4f9789a38e5316","dweb:/ipfs/QmTnNYw65pPadEXNVVX53bPYd8F9GZ4HkmKuVHxMnufDhT"],"license":"BUSL-1.1"},"test/helpers/eigenlayer/interfaces/IStrategyManager.sol":{"keccak256":"0x058ec8e8ded58d19f4ffece0c05daac83b91ab8c102ffa47bae7477f3c999aa6","urls":["bzz-raw://41c1e4fc0e62f292d0260b9c45cae1975f232458f2ea2fa84a1f239764aa9c06","dweb:/ipfs/QmPY2Z7Krecyv4u7XabWUg6Dhs9FeigMP6wceX9x5Rjx9s"],"license":"BUSL-1.1"},"test/helpers/utility/TestStorage.sol":{"keccak256":"0x259885031015840fba5e10c720f0b842ed24e7e797c8d2d9a25e95a95ce16c07","urls":["bzz-raw://45d4759e72431d61d80d2dc3bbd2ec1e4c5d4e18e65622bb1589acff5403644d","dweb:/ipfs/QmZ3X1K5GMMe2h7aDovTkdKLXVfaBQpiafJCXZ1VJ8ffj9"],"license":"BUSL-1.1"}},"version":1},"id":116} \ No newline at end of file diff --git a/out/TestUtils.sol/TestUtils.json b/out/TestUtils.sol/TestUtils.json new file mode 100644 index 00000000..7f73bcf7 --- /dev/null +++ b/out/TestUtils.sol/TestUtils.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"bytes32ToString","inputs":[{"name":"_bytes32","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"hashTaskSTM","inputs":[{"name":"task","type":"tuple","internalType":"struct Task","components":[{"name":"taskId","type":"string","internalType":"string"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"encodedSigAndArgs","type":"bytes","internalType":"bytes"},{"name":"policyID","type":"string","internalType":"string"},{"name":"quorumThresholdCount","type":"uint32","internalType":"uint32"},{"name":"expireByBlockNumber","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"_messageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"toByte","inputs":[{"name":"_uint8","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bytes1","internalType":"bytes1"}],"stateMutability":"pure"}],"bytecode":{"object":"0x6106d661003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c8063878248c2146100505780639201de5514610076578063a86b73f014610096575b600080fd5b61006361005e3660046103ab565b6100c2565b6040519081526020015b60405180910390f35b6100896100843660046104ab565b610119565b60405161006d9190610511565b6100a96100a4366004610524565b610281565b6040516001600160f81b0319909116815260200161006d565b80516020808301516040808501516060860151608087015160a088015160c089015160e08a015195516000996100fc999098979101610547565b604051602081830303815290604052805190602001209050919050565b606060008061012a602060026105d5565b60ff1667ffffffffffffffff811115610145576101456102b3565b6040519080825280601f01601f19166020018201604052801561016f576020820181803683370190505b509050600091505b6001815161018591906105fe565b8260ff16101561027a5760008461019d600285610615565b60ff16602081106101b0576101b0610645565b1a600f16905060006004866101c6600287610615565b60ff16602081106101d9576101d9610645565b1a60f81b6001600160f81b031916901c60f81c90506101f781610281565b838560ff168151811061020c5761020c610645565b60200101906001600160f81b031916908160001a90535061022e84600161065b565b935061023982610281565b838560ff168151811061024e5761024e610645565b60200101906001600160f81b031916908160001a9053505050818061027290610680565b925050610177565b9392505050565b6000600a8260ff1610156102a35761029a82603061065b565b60f81b92915050565b61029a82605761065b565b919050565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156102ed576102ed6102b3565b60405290565b600082601f83011261030457600080fd5b813567ffffffffffffffff8082111561031f5761031f6102b3565b604051601f8301601f19908116603f01168101908282118183101715610347576103476102b3565b8160405283815286602085880101111561036057600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b03811681146102ae57600080fd5b803563ffffffff811681146102ae57600080fd5b6000602082840312156103bd57600080fd5b813567ffffffffffffffff808211156103d557600080fd5b9083019061010082860312156103ea57600080fd5b6103f26102c9565b82358281111561040157600080fd5b61040d878286016102f3565b82525061041c60208401610380565b602082015261042d60408401610380565b60408201526060830135606082015260808301358281111561044e57600080fd5b61045a878286016102f3565b60808301525060a08301358281111561047257600080fd5b61047e878286016102f3565b60a08301525061049060c08401610397565b60c082015260e083013560e082015280935050505092915050565b6000602082840312156104bd57600080fd5b5035919050565b6000815180845260005b818110156104ea576020818501810151868301820152016104ce565b818111156104fc576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061027a60208301846104c4565b60006020828403121561053657600080fd5b813560ff8116811461027a57600080fd5b600061010080835261055b8184018c6104c4565b6001600160a01b038b811660208601528a166040850152606084018990528381036080850152905061058d81886104c4565b905082810360a08401526105a181876104c4565b63ffffffff9590951660c0840152505060e001529695505050505050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168160ff04811182151516156105f6576105f66105bf565b029392505050565b600082821015610610576106106105bf565b500390565b600060ff83168061063657634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115610678576106786105bf565b019392505050565b600060ff821660ff811415610697576106976105bf565b6001019291505056fea2646970667358221220174d150ba1ac541cd7f80e124df0d5fc32cb1f4f3c4f75c468d34c5d863f73f764736f6c634300080c0033","sourceMap":"130:1210:117:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;130:1210:117;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c8063878248c2146100505780639201de5514610076578063a86b73f014610096575b600080fd5b61006361005e3660046103ab565b6100c2565b6040519081526020015b60405180910390f35b6100896100843660046104ab565b610119565b60405161006d9190610511565b6100a96100a4366004610524565b610281565b6040516001600160f81b0319909116815260200161006d565b80516020808301516040808501516060860151608087015160a088015160c089015160e08a015195516000996100fc999098979101610547565b604051602081830303815290604052805190602001209050919050565b606060008061012a602060026105d5565b60ff1667ffffffffffffffff811115610145576101456102b3565b6040519080825280601f01601f19166020018201604052801561016f576020820181803683370190505b509050600091505b6001815161018591906105fe565b8260ff16101561027a5760008461019d600285610615565b60ff16602081106101b0576101b0610645565b1a600f16905060006004866101c6600287610615565b60ff16602081106101d9576101d9610645565b1a60f81b6001600160f81b031916901c60f81c90506101f781610281565b838560ff168151811061020c5761020c610645565b60200101906001600160f81b031916908160001a90535061022e84600161065b565b935061023982610281565b838560ff168151811061024e5761024e610645565b60200101906001600160f81b031916908160001a9053505050818061027290610680565b925050610177565b9392505050565b6000600a8260ff1610156102a35761029a82603061065b565b60f81b92915050565b61029a82605761065b565b919050565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156102ed576102ed6102b3565b60405290565b600082601f83011261030457600080fd5b813567ffffffffffffffff8082111561031f5761031f6102b3565b604051601f8301601f19908116603f01168101908282118183101715610347576103476102b3565b8160405283815286602085880101111561036057600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b03811681146102ae57600080fd5b803563ffffffff811681146102ae57600080fd5b6000602082840312156103bd57600080fd5b813567ffffffffffffffff808211156103d557600080fd5b9083019061010082860312156103ea57600080fd5b6103f26102c9565b82358281111561040157600080fd5b61040d878286016102f3565b82525061041c60208401610380565b602082015261042d60408401610380565b60408201526060830135606082015260808301358281111561044e57600080fd5b61045a878286016102f3565b60808301525060a08301358281111561047257600080fd5b61047e878286016102f3565b60a08301525061049060c08401610397565b60c082015260e083013560e082015280935050505092915050565b6000602082840312156104bd57600080fd5b5035919050565b6000815180845260005b818110156104ea576020818501810151868301820152016104ce565b818111156104fc576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061027a60208301846104c4565b60006020828403121561053657600080fd5b813560ff8116811461027a57600080fd5b600061010080835261055b8184018c6104c4565b6001600160a01b038b811660208601528a166040850152606084018990528381036080850152905061058d81886104c4565b905082810360a08401526105a181876104c4565b63ffffffff9590951660c0840152505060e001529695505050505050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168160ff04811182151516156105f6576105f66105bf565b029392505050565b600082821015610610576106106105bf565b500390565b600060ff83168061063657634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115610678576106786105bf565b019392505050565b600060ff821660ff811415610697576106976105bf565b6001019291505056fea2646970667358221220174d150ba1ac541cd7f80e124df0d5fc32cb1f4f3c4f75c468d34c5d863f73f764736f6c634300080c0033","sourceMap":"130:1210:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;879:459;;;;;;:::i;:::-;;:::i;:::-;;;2895:25:120;;;2883:2;2868:18;879:459:117;;;;;;;;154:499;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;659:214::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;4270:26:120;;;4252:45;;4240:2;4225:18;659:214:117;4100:203:120;879:459:117;1051:11;;1080:14;;;;;1112:11;;;;;1141:10;;;;1169:22;;;;1209:13;;;;1240:25;;;;1283:24;;;;1023:298;;953:20;;1023:298;;1051:11;;1080:14;1283:24;1023:298;;:::i;:::-;;;;;;;;;;;;;1000:331;;;;;;985:346;;879:459;;;:::o;154:499::-;232:13;257:7;;315:19;:15;333:1;315:19;:::i;:::-;304:32;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;304:32:117;;278:58;;355:1;351:5;;346:265;382:1;362:10;:17;:21;;;;:::i;:::-;358:1;:25;;;346:265;;;404:8;421;430:5;434:1;430;:5;:::i;:::-;421:15;;;;;;;;;:::i;:::-;;439:4;415:29;;-1:-1:-1;458:8:117;494:1;475:8;484:5;488:1;484;:5;:::i;:::-;475:15;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;475:20:117;;;;469:27;;458:38;;527:10;534:2;527:6;:10::i;:::-;511;522:1;511:13;;;;;;;;;;:::i;:::-;;;;:26;-1:-1:-1;;;;;511:26:117;;;;;;;;-1:-1:-1;555:5:117;:1;559;555:5;:::i;:::-;551:9;;590:10;597:2;590:6;:10::i;:::-;574;585:1;574:13;;;;;;;;;;:::i;:::-;;;;:26;-1:-1:-1;;;;;574:26:117;;;;;;;;;390:221;;385:3;;;;;:::i;:::-;;;;346:265;;;635:10;154:499;-1:-1:-1;;;154:499:117:o;659:214::-;724:6;755:2;746:6;:11;;;742:125;;;787:11;:6;796:2;787:11;:::i;:::-;780:19;;;659:214;-1:-1:-1;;659:214:117:o;742:125::-;844:11;:6;853:2;844:11;:::i;742:125::-;659:214;;;:::o;14:127:120:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;213:2;207:9;255:6;243:19;;292:18;277:34;;313:22;;;274:62;271:88;;;339:18;;:::i;:::-;375:2;368:22;146:250;:::o;401:719::-;444:5;497:3;490:4;482:6;478:17;474:27;464:55;;515:1;512;505:12;464:55;551:6;538:20;577:18;614:2;610;607:10;604:36;;;620:18;;:::i;:::-;695:2;689:9;663:2;749:13;;-1:-1:-1;;745:22:120;;;769:2;741:31;737:40;725:53;;;793:18;;;813:22;;;790:46;787:72;;;839:18;;:::i;:::-;879:10;875:2;868:22;914:2;906:6;899:18;960:3;953:4;948:2;940:6;936:15;932:26;929:35;926:55;;;977:1;974;967:12;926:55;1041:2;1034:4;1026:6;1022:17;1015:4;1007:6;1003:17;990:54;1088:1;1081:4;1076:2;1068:6;1064:15;1060:26;1053:37;1108:6;1099:15;;;;;;401:719;;;;:::o;1125:173::-;1193:20;;-1:-1:-1;;;;;1242:31:120;;1232:42;;1222:70;;1288:1;1285;1278:12;1303:163;1370:20;;1430:10;1419:22;;1409:33;;1399:61;;1456:1;1453;1446:12;1471:1265;1553:6;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1662:9;1649:23;1691:18;1732:2;1724:6;1721:14;1718:34;;;1748:1;1745;1738:12;1718:34;1771:22;;;;1827:6;1809:16;;;1805:29;1802:49;;;1847:1;1844;1837:12;1802:49;1873:17;;:::i;:::-;1928:2;1915:16;1956:2;1946:8;1943:16;1940:36;;;1972:1;1969;1962:12;1940:36;1999:45;2036:7;2025:8;2021:2;2017:17;1999:45;:::i;:::-;1992:5;1985:60;;2077:31;2104:2;2100;2096:11;2077:31;:::i;:::-;2072:2;2065:5;2061:14;2054:55;2141:31;2168:2;2164;2160:11;2141:31;:::i;:::-;2136:2;2129:5;2125:14;2118:55;2226:2;2222;2218:11;2205:25;2200:2;2193:5;2189:14;2182:49;2277:3;2273:2;2269:12;2256:26;2307:2;2297:8;2294:16;2291:36;;;2323:1;2320;2313:12;2291:36;2360:45;2397:7;2386:8;2382:2;2378:17;2360:45;:::i;:::-;2354:3;2347:5;2343:15;2336:70;;2452:3;2448:2;2444:12;2431:26;2482:2;2472:8;2469:16;2466:36;;;2498:1;2495;2488:12;2466:36;2535:45;2572:7;2561:8;2557:2;2553:17;2535:45;:::i;:::-;2529:3;2522:5;2518:15;2511:70;;2614:31;2640:3;2636:2;2632:12;2614:31;:::i;:::-;2608:3;2601:5;2597:15;2590:56;2700:3;2696:2;2692:12;2679:26;2673:3;2666:5;2662:15;2655:51;2725:5;2715:15;;;;;1471:1265;;;;:::o;2931:180::-;2990:6;3043:2;3031:9;3022:7;3018:23;3014:32;3011:52;;;3059:1;3056;3049:12;3011:52;-1:-1:-1;3082:23:120;;2931:180;-1:-1:-1;2931:180:120:o;3116:472::-;3158:3;3196:5;3190:12;3223:6;3218:3;3211:19;3248:1;3258:162;3272:6;3269:1;3266:13;3258:162;;;3334:4;3390:13;;;3386:22;;3380:29;3362:11;;;3358:20;;3351:59;3287:12;3258:162;;;3438:6;3435:1;3432:13;3429:87;;;3504:1;3497:4;3488:6;3483:3;3479:16;3475:27;3468:38;3429:87;-1:-1:-1;3570:2:120;3549:15;-1:-1:-1;;3545:29:120;3536:39;;;;3577:4;3532:50;;3116:472;-1:-1:-1;;3116:472:120:o;3593:228::-;3750:2;3739:9;3732:21;3713:4;3770:45;3811:2;3800:9;3796:18;3788:6;3770:45;:::i;3826:269::-;3883:6;3936:2;3924:9;3915:7;3911:23;3907:32;3904:52;;;3952:1;3949;3942:12;3904:52;3991:9;3978:23;4041:4;4034:5;4030:16;4023:5;4020:27;4010:55;;4061:1;4058;4051:12;4308:996;4652:4;4681:3;4711:2;4700:9;4693:21;4737:45;4778:2;4767:9;4763:18;4755:6;4737:45;:::i;:::-;-1:-1:-1;;;;;4856:15:120;;;4851:2;4836:18;;4829:43;4908:15;;4903:2;4888:18;;4881:43;4955:2;4940:18;;4933:34;;;5004:22;;;4998:3;4983:19;;4976:51;4723:59;-1:-1:-1;5050:33:120;4723:59;5068:6;5050:33;:::i;:::-;5036:47;;5132:9;5124:6;5120:22;5114:3;5103:9;5099:19;5092:51;5160:33;5186:6;5178;5160:33;:::i;:::-;5242:10;5230:23;;;;5224:3;5209:19;;5202:52;-1:-1:-1;;5285:3:120;5270:19;5263:35;5152:41;4308:996;-1:-1:-1;;;;;;4308:996:120:o;5309:127::-;5370:10;5365:3;5361:20;5358:1;5351:31;5401:4;5398:1;5391:15;5425:4;5422:1;5415:15;5441:238;5479:7;5519:4;5516:1;5512:12;5551:4;5548:1;5544:12;5611:3;5605:4;5601:14;5596:3;5593:23;5586:3;5579:11;5572:19;5568:49;5565:75;;;5620:18;;:::i;:::-;5660:13;;5441:238;-1:-1:-1;;;5441:238:120:o;5684:125::-;5724:4;5752:1;5749;5746:8;5743:34;;;5757:18;;:::i;:::-;-1:-1:-1;5794:9:120;;5684:125::o;5814:262::-;5852:1;5886:4;5883:1;5879:12;5910:3;5900:134;;5956:10;5951:3;5947:20;5944:1;5937:31;5991:4;5988:1;5981:15;6019:4;6016:1;6009:15;5900:134;6066:3;6059:4;6056:1;6052:12;6048:22;6043:27;;;5814:262;;;;:::o;6081:127::-;6142:10;6137:3;6133:20;6130:1;6123:31;6173:4;6170:1;6163:15;6197:4;6194:1;6187:15;6213:204;6251:3;6287:4;6284:1;6280:12;6319:4;6316:1;6312:12;6354:3;6348:4;6344:14;6339:3;6336:23;6333:49;;;6362:18;;:::i;:::-;6398:13;;6213:204;-1:-1:-1;;;6213:204:120:o;6422:175::-;6459:3;6503:4;6496:5;6492:16;6532:4;6523:7;6520:17;6517:43;;;6540:18;;:::i;:::-;6589:1;6576:15;;6422:175;-1:-1:-1;;6422:175:120:o","linkReferences":{}},"methodIdentifiers":{"bytes32ToString(bytes32)":"9201de55","hashTaskSTM(Task)":"878248c2","toByte(uint8)":"a86b73f0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_bytes32\",\"type\":\"bytes32\"}],\"name\":\"bytes32ToString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"taskId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedSigAndArgs\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"policyID\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"quorumThresholdCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"expireByBlockNumber\",\"type\":\"uint256\"}],\"internalType\":\"struct Task\",\"name\":\"task\",\"type\":\"tuple\"}],\"name\":\"hashTaskSTM\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_uint8\",\"type\":\"uint8\"}],\"name\":\"toByte\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/helpers/utility/TestUtils.sol\":\"TestUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]},\"src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537\",\"dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5\"]},\"test/helpers/utility/TestUtils.sol\":{\"keccak256\":\"0x9a8f2eb436c278353499ba7e42dfdc947cadc0c1cac9990e2b3ce6ff7a73d6e3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9da60794dda4557d72a054ffb2d529ba00c3bb71bc360b5238b61e11b15963af\",\"dweb:/ipfs/QmdfJg5jKJZNnmsmhZLCYPqqYQoLeMtUj9Bmugh9AeNXjU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"_bytes32","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"bytes32ToString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"struct Task","name":"task","type":"tuple","components":[{"internalType":"string","name":"taskId","type":"string"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"encodedSigAndArgs","type":"bytes"},{"internalType":"string","name":"policyID","type":"string"},{"internalType":"uint32","name":"quorumThresholdCount","type":"uint32"},{"internalType":"uint256","name":"expireByBlockNumber","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"hashTaskSTM","outputs":[{"internalType":"bytes32","name":"_messageHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint8","name":"_uint8","type":"uint8"}],"stateMutability":"pure","type":"function","name":"toByte","outputs":[{"internalType":"bytes1","name":"","type":"bytes1"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/helpers/utility/TestUtils.sol":"TestUtils"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"},"src/interfaces/IServiceManager.sol":{"keccak256":"0xab5e0c9dd805cade2464e5dc090c0cce4f9f9efb16b8c5b3eefb9337bd98d6a4","urls":["bzz-raw://84d2bf6e40917193d3e1a449223aa33f245007e2491ac8581de8a8616c967537","dweb:/ipfs/QmXK2cNw8LpE5uaCrzo6X3mCnopbZ75P7d8m55wpLDQ8A5"],"license":"MIT"},"test/helpers/utility/TestUtils.sol":{"keccak256":"0x9a8f2eb436c278353499ba7e42dfdc947cadc0c1cac9990e2b3ce6ff7a73d6e3","urls":["bzz-raw://9da60794dda4557d72a054ffb2d529ba00c3bb71bc360b5238b61e11b15963af","dweb:/ipfs/QmdfJg5jKJZNnmsmhZLCYPqqYQoLeMtUj9Bmugh9AeNXjU"],"license":"BUSL-1.1"}},"version":1},"id":117} \ No newline at end of file diff --git a/out/TickMath.sol/TickMath.json b/out/TickMath.sol/TickMath.json new file mode 100644 index 00000000..4cfc0c9f --- /dev/null +++ b/out/TickMath.sol/TickMath.json @@ -0,0 +1 @@ +{"abi":[{"type":"error","name":"R","inputs":[]},{"type":"error","name":"T","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041d3b8a86993c4939acc670feb3ade66010abe0c0203f91ed4b7c828d423d07664736f6c634300080c0033","sourceMap":"305:9112:67:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;305:9112:67;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041d3b8a86993c4939acc670feb3ade66010abe0c0203f91ed4b7c828d423d07664736f6c634300080c0033","sourceMap":"305:9112:67:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"R\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"T\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_RATIO\":{\"details\":\"The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\"},\"MIN_SQRT_RATIO\":{\"details\":\"The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\"}},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v3-core/contracts/libraries/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"R"},{"inputs":[],"type":"error","name":"T"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v3-core/contracts/libraries/TickMath.sol":"TickMath"},"evmVersion":"london","libraries":{}},"sources":{"lib/v3-core/contracts/libraries/TickMath.sol":{"keccak256":"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129","urls":["bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c","dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS"],"license":"GPL-2.0-or-later"}},"version":1},"id":67} \ No newline at end of file diff --git a/out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json b/out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json new file mode 100644 index 00000000..c73d42db --- /dev/null +++ b/out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"admin_","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"admin_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"changeAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"implementation_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c9586797bfdc2f91406000140c5f88964fdad394ad0926eeac3f58c94a73d76e64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","sourceMap":"1649:3469:49:-:0;;;1923:167;;;;;;;;;;;;;;;;;;:::i;:::-;2038:6;2046:5;1024:39:44;2038:6:49;2046:5;1057::44;1024:17;:39::i;:::-;-1:-1:-1;2063:20:49::1;::::0;-1:-1:-1;2076:6:49;2063:12:::1;:20::i;:::-;1923:167:::0;;;1649:3469;;2183:295:45;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;;;;;:53;;:::i;:::-;;2360:112;2183:295;;;:::o;4624:135::-;4688:35;4701:11;:9;:11::i;:::-;4688:35;;;-1:-1:-1;;;;;1879:15:120;;;1861:34;;1931:15;;;1926:2;1911:18;;1904:43;1796:18;4688:35:45;;;;;;;4733:19;4743:8;4733:9;:19::i;:::-;4624:135;:::o;1897:152::-;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:45;;;;;;;;1897:152;:::o;6570:198:51:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:51:o;4108:122:45:-;4152:7;4178:39;-1:-1:-1;;;;;;;;;;;4205:11:45;;4178:26;;;;;:39;;:::i;:::-;:45;-1:-1:-1;;;;;4178:45:45;;4108:122;-1:-1:-1;4108:122:45:o;4312:201::-;-1:-1:-1;;;;;4375:22:45;;4367:73;;;;-1:-1:-1;;;4367:73:45;;2160:2:120;4367:73:45;;;2142:21:120;2199:2;2179:18;;;2172:30;2238:34;2218:18;;;2211:62;-1:-1:-1;;;2289:18:120;;;2282:36;2335:19;;4367:73:45;;;;;;;;;4498:8;4450:39;-1:-1:-1;;;;;;;;;;;4477:11:45;;4450:26;;;;;:39;;:::i;:::-;:56;;-1:-1:-1;;;;;;4450:56:45;-1:-1:-1;;;;;4450:56:45;;;;;;;;;;-1:-1:-1;4312:201:45:o;1532:259::-;1613:37;1632:17;1613:18;;;;;:37;;:::i;:::-;1605:95;;;;-1:-1:-1;;;1605:95:45;;2567:2:120;1605:95:45;;;2549:21:120;2606:2;2586:18;;;2579:30;2645:34;2625:18;;;2618:62;-1:-1:-1;;;2696:18:120;;;2689:43;2749:19;;1605:95:45;2365:409:120;1605:95:45;1767:17;1710:48;1030:66;1737:20;;1710:26;;;;;:48;;:::i;6954:387:51:-;7095:12;-1:-1:-1;;;;;1465:19:51;;;7119:69;;;;-1:-1:-1;;;7119:69:51;;2981:2:120;7119:69:51;;;2963:21:120;3020:2;3000:18;;;2993:30;3059:34;3039:18;;;3032:62;-1:-1:-1;;;3110:18:120;;;3103:36;3156:19;;7119:69:51;2779:402:120;7119:69:51;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:51;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:51;;-1:-1:-1;7199:67:51;-1:-1:-1;7283:51:51;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:51:o;1614:190:53:-;1784:4;1614:190::o;1175:320:51:-;-1:-1:-1;;;;;1465:19:51;;:23;;;1175:320::o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:51;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:51;;;;;;;;:::i;14:177:120:-;93:13;;-1:-1:-1;;;;;135:31:120;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:258;400:1;410:113;424:6;421:1;418:13;410:113;;;500:11;;;494:18;481:11;;;474:39;446:2;439:10;410:113;;;541:6;538:1;535:13;532:48;;;-1:-1:-1;;576:1:120;558:16;;551:27;328:258::o;591:1053::-;688:6;696;704;757:2;745:9;736:7;732:23;728:32;725:52;;;773:1;770;763:12;725:52;796:40;826:9;796:40;:::i;:::-;786:50;;855:49;900:2;889:9;885:18;855:49;:::i;:::-;948:2;933:18;;927:25;845:59;;-1:-1:-1;;;;;;1001:14:120;;;998:34;;;1028:1;1025;1018:12;998:34;1066:6;1055:9;1051:22;1041:32;;1111:7;1104:4;1100:2;1096:13;1092:27;1082:55;;1133:1;1130;1123:12;1082:55;1162:2;1156:9;1184:2;1180;1177:10;1174:36;;;1190:18;;:::i;:::-;1265:2;1259:9;1233:2;1319:13;;-1:-1:-1;;1315:22:120;;;1339:2;1311:31;1307:40;1295:53;;;1363:18;;;1383:22;;;1360:46;1357:72;;;1409:18;;:::i;:::-;1449:10;1445:2;1438:22;1484:2;1476:6;1469:18;1524:7;1519:2;1514;1510;1506:11;1502:20;1499:33;1496:53;;;1545:1;1542;1535:12;1496:53;1558:55;1610:2;1605;1597:6;1593:15;1588:2;1584;1580:11;1558:55;:::i;:::-;1632:6;1622:16;;;;;;;591:1053;;;;;:::o;3186:274::-;3315:3;3353:6;3347:13;3369:53;3415:6;3410:3;3403:4;3395:6;3391:17;3369:53;:::i;:::-;3438:16;;;;;3186:274;-1:-1:-1;;3186:274:120:o;3465:383::-;3614:2;3603:9;3596:21;3577:4;3646:6;3640:13;3689:6;3684:2;3673:9;3669:18;3662:34;3705:66;3764:6;3759:2;3748:9;3744:18;3739:2;3731:6;3727:15;3705:66;:::i;:::-;3832:2;3811:15;-1:-1:-1;;3807:29:120;3792:45;;;;3839:2;3788:54;;3465:383;-1:-1:-1;;3465:383:120:o;:::-;1649:3469:49;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c9586797bfdc2f91406000140c5f88964fdad394ad0926eeac3f58c94a73d76e64736f6c634300080c0033","sourceMap":"1649:3469:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2898:11:46;:9;:11::i;:::-;1649:3469:49;;2675:11:46;:9;:11::i;3960:134:49:-;;;;;;;;;;-1:-1:-1;3960:134:49;;;;;:::i;:::-;;:::i;4470:164::-;;;;;;:::i;:::-;;:::i;3363:129::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1217:32:120;;;1199:51;;1187:2;1172:18;3363:129:49;;;;;;;3697:103;;;;;;;;;;-1:-1:-1;3697:103:49;;;;;:::i;:::-;;:::i;2807:96::-;;;;;;;;;;;;;:::i;2322:110:46:-;2370:17;:15;:17::i;:::-;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;3960:134:49:-;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;4033:54:::1;4051:17;4070:9;;;;;;;;;;;::::0;4081:5:::1;4033:17;:54::i;:::-;3960:134:::0;:::o;2260:99::-;2337:11;:9;:11::i;4470:164::-;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;4579:48:::1;4597:17;4616:4;;4579:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4622:4:49::1;::::0;-1:-1:-1;4579:17:49::1;::::0;-1:-1:-1;;4579:48:49:i:1;:::-;4470:164:::0;;;:::o;2260:99::-;2337:11;:9;:11::i;3363:129::-;3415:23;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;3468:17:::1;:15;:17::i;:::-;3450:35;;3363:129:::0;:::o;2260:99::-;2337:11;:9;:11::i;:::-;3363:129;:::o;3697:103::-;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;3771:22:::1;3784:8;3771:12;:22::i;2807:96::-:0;2850:14;2278:11;:9;:11::i;:::-;-1:-1:-1;;;;;2264:25:49;:10;-1:-1:-1;;;;;2264:25:49;;2260:99;;;2885:11:::1;:9;:11::i;6570:198:51:-:0;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:51:o;1175:320::-;-1:-1:-1;;;;;1465:19:51;;:23;;;1175:320::o;4909:207:49:-;4994:11;:9;:11::i;:::-;-1:-1:-1;;;;;4980:25:49;:10;-1:-1:-1;;;;;4980:25:49;;;4972:104;;;;-1:-1:-1;;;4972:104:49;;1463:2:120;4972:104:49;;;1445:21:120;1502:2;1482:18;;;1475:30;1541:34;1521:18;;;1514:62;1612:34;1592:18;;;1585:62;-1:-1:-1;;;1663:19:120;;;1656:33;1706:19;;4972:104:49;;;;;;;;1148:140:44;1215:12;1246:35;:33;:35::i;948:895:46:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;4108:122:45;4152:7;3842:66;4178:39;:45;-1:-1:-1;;;;;4178:45:45;;4108:122;-1:-1:-1;4108:122:45:o;2183:295::-;2321:29;2332:17;2321:10;:29::i;:::-;2378:1;2364:4;:11;:15;:28;;;;2383:9;2364:28;2360:112;;;2408:53;2437:17;2456:4;2408:28;:53::i;:::-;;2183:295;;;:::o;4624:135::-;4688:35;4701:11;:9;:11::i;:::-;4688:35;;;-1:-1:-1;;;;;1966:15:120;;;1948:34;;2018:15;;;2013:2;1998:18;;1991:43;1883:18;4688:35:45;;;;;;;4733:19;4743:8;4733:9;:19::i;6954:387:51:-;7095:12;-1:-1:-1;;;;;1465:19:51;;;7119:69;;;;-1:-1:-1;;;7119:69:51;;2247:2:120;7119:69:51;;;2229:21:120;2286:2;2266:18;;;2259:30;2325:34;2305:18;;;2298:62;-1:-1:-1;;;2376:18:120;;;2369:36;2422:19;;7119:69:51;2045:402:120;7119:69:51;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:51;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:51:o;1301:140:45:-;1354:7;1030:66;1380:48;1614:190:53;1897:152:45;1963:37;1982:17;1963:18;:37::i;:::-;2015:27;;-1:-1:-1;;;;;2015:27:45;;;;;;;;1897:152;:::o;4312:201::-;-1:-1:-1;;;;;4375:22:45;;4367:73;;;;-1:-1:-1;;;4367:73:45;;3196:2:120;4367:73:45;;;3178:21:120;3235:2;3215:18;;;3208:30;3274:34;3254:18;;;3247:62;-1:-1:-1;;;3325:18:120;;;3318:36;3371:19;;4367:73:45;2994:402:120;4367:73:45;4498:8;3842:66;4450:39;:56;;-1:-1:-1;;;;;;4450:56:45;-1:-1:-1;;;;;4450:56:45;;;;;;;;;;-1:-1:-1;4312:201:45:o;7561:742:51:-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:51;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:51;;;;;;;;:::i;1532:259:45:-;-1:-1:-1;;;;;1465:19:51;;;1605:95:45;;;;-1:-1:-1;;;1605:95:45;;3991:2:120;1605:95:45;;;3973:21:120;4030:2;4010:18;;;4003:30;4069:34;4049:18;;;4042:62;-1:-1:-1;;;4120:18:120;;;4113:43;4173:19;;1605:95:45;3789:409:120;1605:95:45;1767:17;1030:66;1710:48;1614:190:53;14:173:120;82:20;;-1:-1:-1;;;;;131:31:120;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:665::-;462:6;470;478;531:2;519:9;510:7;506:23;502:32;499:52;;;547:1;544;537:12;499:52;570:29;589:9;570:29;:::i;:::-;560:39;;650:2;639:9;635:18;622:32;673:18;714:2;706:6;703:14;700:34;;;730:1;727;720:12;700:34;768:6;757:9;753:22;743:32;;813:7;806:4;802:2;798:13;794:27;784:55;;835:1;832;825:12;784:55;875:2;862:16;901:2;893:6;890:14;887:34;;;917:1;914;907:12;887:34;962:7;957:2;948:6;944:2;940:15;936:24;933:37;930:57;;;983:1;980;973:12;930:57;1014:2;1010;1006:11;996:21;;1036:6;1026:16;;;;;383:665;;;;;:::o;2452:258::-;2524:1;2534:113;2548:6;2545:1;2542:13;2534:113;;;2624:11;;;2618:18;2605:11;;;2598:39;2570:2;2563:10;2534:113;;;2665:6;2662:1;2659:13;2656:48;;;-1:-1:-1;;2700:1:120;2682:16;;2675:27;2452:258::o;2715:274::-;2844:3;2882:6;2876:13;2898:53;2944:6;2939:3;2932:4;2924:6;2920:17;2898:53;:::i;:::-;2967:16;;;;;2715:274;-1:-1:-1;;2715:274:120:o;3401:383::-;3550:2;3539:9;3532:21;3513:4;3582:6;3576:13;3625:6;3620:2;3609:9;3605:18;3598:34;3641:66;3700:6;3695:2;3684:9;3680:18;3675:2;3667:6;3663:15;3641:66;:::i;:::-;3768:2;3747:15;-1:-1:-1;;3743:29:120;3728:45;;;;3775:2;3724:54;;3401:383;-1:-1:-1;;3401:383:120:o","linkReferences":{}},"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}]},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeAdmin"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d","urls":["bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5","dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol":{"keccak256":"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a","urls":["bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8","dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27","urls":["bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472","dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9","urls":["bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1","dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"}},"version":1},"id":49} \ No newline at end of file diff --git a/out/Vm.sol/Vm.json b/out/Vm.sol/Vm.json new file mode 100644 index 00000000..bfadd388 --- /dev/null +++ b/out/Vm.sol/Vm.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","deal(address,uint256)":"c88a5e6d","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","difficulty(uint256)":"46cc92d9","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isPersistent(address)":"d92d8efd","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","projectRoot()":"d930a0e6","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","revertTo(uint256)":"44d7f0a4","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign(uint256,bytes32)":"e341eaa4","snapshot()":"9711715a","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","stopBroadcast()":"76eadd36","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","txGasPrice(uint256)":"48f50c0f","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file diff --git a/out/Vm.sol/VmSafe.json b/out/Vm.sol/VmSafe.json new file mode 100644 index 00000000..24a6261e --- /dev/null +++ b/out/Vm.sol/VmSafe.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","closeFile(string)":"48c3241f","createDir(string,bool)":"168b64d3","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","projectRoot()":"d930a0e6","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","resumeGasMetering()":"2bcd50e0","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","sign(uint256,bytes32)":"e341eaa4","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","stopBroadcast()":"76eadd36","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file diff --git a/out/beacon/IBeacon.sol/IBeacon.json b/out/beacon/IBeacon.sol/IBeacon.json new file mode 100644 index 00000000..1967f893 --- /dev/null +++ b/out/beacon/IBeacon.sol/IBeacon.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"implementation()":"5c60da1b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":"IBeacon"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"}},"version":1},"id":0} \ No newline at end of file diff --git a/out/build-info/0536e4cd3e0a76c3f5fbf0887dc6f9d4.json b/out/build-info/0536e4cd3e0a76c3f5fbf0887dc6f9d4.json new file mode 100644 index 00000000..943bac3e --- /dev/null +++ b/out/build-info/0536e4cd3e0a76c3f5fbf0887dc6f9d4.json @@ -0,0 +1 @@ +{"id":"0536e4cd3e0a76c3f5fbf0887dc6f9d4","source_id_to_path":{"0":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","1":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","2":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","3":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","4":"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol","5":"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol","6":"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol","7":"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol","8":"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol","9":"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol","10":"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol","11":"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol","12":"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol","13":"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol","14":"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol","15":"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol","16":"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol","17":"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol","18":"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol","19":"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol","20":"lib/forge-std/lib/ds-test/src/test.sol","21":"lib/forge-std/src/Base.sol","22":"lib/forge-std/src/StdAssertions.sol","23":"lib/forge-std/src/StdChains.sol","24":"lib/forge-std/src/StdCheats.sol","25":"lib/forge-std/src/StdError.sol","26":"lib/forge-std/src/StdInvariant.sol","27":"lib/forge-std/src/StdJson.sol","28":"lib/forge-std/src/StdMath.sol","29":"lib/forge-std/src/StdStorage.sol","30":"lib/forge-std/src/StdStyle.sol","31":"lib/forge-std/src/StdUtils.sol","32":"lib/forge-std/src/Test.sol","33":"lib/forge-std/src/Vm.sol","34":"lib/forge-std/src/console.sol","35":"lib/forge-std/src/console2.sol","36":"lib/forge-std/src/interfaces/IMulticall3.sol","37":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","38":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","39":"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol","40":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","41":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","42":"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol","43":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","44":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","45":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol","46":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","47":"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","48":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","49":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","50":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","51":"lib/openzeppelin-contracts/contracts/utils/Address.sol","52":"lib/openzeppelin-contracts/contracts/utils/Context.sol","53":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","54":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","55":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","56":"lib/solmate/src/utils/FixedPointMathLib.sol","57":"lib/utils/SafeCast.sol","58":"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol","59":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol","60":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol","61":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol","62":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol","63":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol","64":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol","65":"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol","66":"lib/v3-core/contracts/libraries/FullMath.sol","67":"lib/v3-core/contracts/libraries/TickMath.sol","68":"lib/v3-periphery/contracts/libraries/OracleLibrary.sol","69":"lib/v3-periphery/contracts/libraries/PoolAddress.sol","70":"src/PriceAggregatorUniV3.sol","71":"src/ServiceManager.sol","72":"src/examples/MetaCoin.sol","73":"src/examples/MetaCoinWithRateLimit.sol","74":"src/interfaces/IPredicateClient.sol","75":"src/interfaces/IPriceAggregator.sol","76":"src/interfaces/IRateLimiter.sol","77":"src/interfaces/IServiceManager.sol","78":"src/interfaces/IStakeRegistry.sol","79":"src/mixins/PredicateClient.sol","80":"src/mixins/RateLimiter.sol","81":"test/Client.t.sol","82":"test/Ownership.t.sol","83":"test/PriceAggregatorUniV3.t.sol","84":"test/RateLimiter.t.sol","85":"test/STMTest.t.sol","86":"test/ServiceManager.t.sol","87":"test/helpers/DummyToken.sol","88":"test/helpers/MockClient.sol","89":"test/helpers/MockDelegationManager.sol","90":"test/helpers/MockEigenPodManager.sol","91":"test/helpers/MockProxy.sol","92":"test/helpers/MockProxyAdmin.sol","93":"test/helpers/MockStakeRegistry.sol","94":"test/helpers/MockStrategyManager.sol","95":"test/helpers/eigenlayer/BeaconChainProofs.sol","96":"test/helpers/eigenlayer/DelegationManager.sol","97":"test/helpers/eigenlayer/DelegationManagerStorage.sol","98":"test/helpers/eigenlayer/EIP1271SignatureUtils.sol","99":"test/helpers/eigenlayer/Endian.sol","100":"test/helpers/eigenlayer/Merkle.sol","101":"test/helpers/eigenlayer/Pausable.sol","102":"test/helpers/eigenlayer/interfaces/IBeaconChainOracle.sol","103":"test/helpers/eigenlayer/interfaces/IDelegationManager.sol","104":"test/helpers/eigenlayer/interfaces/IETHPOSDeposit.sol","105":"test/helpers/eigenlayer/interfaces/IEigenPod.sol","106":"test/helpers/eigenlayer/interfaces/IEigenPodManager.sol","107":"test/helpers/eigenlayer/interfaces/IPausable.sol","108":"test/helpers/eigenlayer/interfaces/IPauserRegistry.sol","109":"test/helpers/eigenlayer/interfaces/ISignatureUtils.sol","110":"test/helpers/eigenlayer/interfaces/ISlasher.sol","111":"test/helpers/eigenlayer/interfaces/IStrategy.sol","112":"test/helpers/eigenlayer/interfaces/IStrategyManager.sol","113":"test/helpers/utility/STMSetup.sol","114":"test/helpers/utility/ServiceManagerSetup.sol","115":"test/helpers/utility/TestPrep.sol","116":"test/helpers/utility/TestStorage.sol","117":"test/helpers/utility/TestUtils.sol","118":"test/mocks/MockPriceAggregator.sol","119":"test/mocks/MockUniswapV3Pool.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/out/console.sol/console.json b/out/console.sol/console.json new file mode 100644 index 00000000..ee593ce2 --- /dev/null +++ b/out/console.sol/console.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d437ef23d7d99a11ceef982d8a324683c0e7ad38e339b14697af213f35581ff764736f6c634300080c0033","sourceMap":"66:66622:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:66622:34;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d437ef23d7d99a11ceef982d8a324683c0e7ad38e339b14697af213f35581ff764736f6c634300080c0033","sourceMap":"66:66622:34:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"}},"version":1},"id":34} \ No newline at end of file diff --git a/out/console2.sol/console2.json b/out/console2.sol/console2.json new file mode 100644 index 00000000..a7b0d621 --- /dev/null +++ b/out/console2.sol/console2.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220beec66150d273a0143c2e526f7007fbe823356c905fa9546b209c592022dc1ef64736f6c634300080c0033","sourceMap":"525:69152:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;525:69152:35;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220beec66150d273a0143c2e526f7007fbe823356c905fa9546b209c592022dc1ef64736f6c634300080c0033","sourceMap":"525:69152:35:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console2.sol":"console2"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/out/draft-IERC1822.sol/IERC1822Proxiable.json b/out/draft-IERC1822.sol/IERC1822Proxiable.json new file mode 100644 index 00000000..49435923 --- /dev/null +++ b/out/draft-IERC1822.sol/IERC1822Proxiable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"proxiableUUID()":"52d1902d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":"IERC1822Proxiable"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff","urls":["bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688","dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"],"license":"MIT"}},"version":1},"id":43} \ No newline at end of file diff --git a/out/interfaces/IBeaconChainOracle.sol/IBeaconChainOracle.json b/out/interfaces/IBeaconChainOracle.sol/IBeaconChainOracle.json new file mode 100644 index 00000000..d1931b1a --- /dev/null +++ b/out/interfaces/IBeaconChainOracle.sol/IBeaconChainOracle.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"timestampToBlockRoot","inputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"timestampToBlockRoot(uint256)":"643599f2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"timestampToBlockRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for the BeaconStateOracle contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"timestampToBlockRoot(uint256)\":{\"notice\":\"The block number to state root mapping.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":\"IBeaconChainOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"timestampToBlockRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"timestampToBlockRoot(uint256)":{"notice":"The block number to state root mapping."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":"IBeaconChainOracle"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"}},"version":1},"id":6} \ No newline at end of file diff --git a/out/interfaces/IDelegationManager.sol/IDelegationManager.json b/out/interfaces/IDelegationManager.sol/IDelegationManager.json new file mode 100644 index 00000000..322a7e03 --- /dev/null +++ b/out/interfaces/IDelegationManager.sol/IDelegationManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAKER_DELEGATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateCurrentStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateDelegationApprovalDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateStakerDelegationDigestHash","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"_stakerNonce","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"completeQueuedWithdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"},{"name":"receiveAsTokens","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeQueuedWithdrawals","inputs":[{"name":"withdrawals","type":"tuple[]","internalType":"struct IDelegationManager.Withdrawal[]","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]},{"name":"tokens","type":"address[][]","internalType":"contract IERC20[][]"},{"name":"middlewareTimesIndexes","type":"uint256[]","internalType":"uint256[]"},{"name":"receiveAsTokens","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cumulativeWithdrawalsQueued","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decreaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateTo","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateToBySignature","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"stakerSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSignatureAndExpiry","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"approverSalt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegatedTo","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApprover","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"delegationApproverSaltIsSpent","inputs":[{"name":"_delegationApprover","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"earningsReceiver","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalDelay","inputs":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseDelegatedShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDelegated","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawals","inputs":[{"name":"withdrawalsToQueue","type":"tuple[]","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"minWithdrawalDelayBlocks","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"modifyOperatorDetails","inputs":[{"name":"newOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorDetails","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"queueWithdrawals","inputs":[{"name":"queuedWithdrawalParams","type":"tuple[]","internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"withdrawer","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerAsOperator","inputs":[{"name":"registeringOperatorDetails","type":"tuple","internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]},{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakerNonce","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerOptOutWindowBlocks","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyWithdrawalDelayBlocks","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"undelegate","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawalRoot","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"MinWithdrawalDelayBlocksSet","inputs":[{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorDetailsModified","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newOperatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorMetadataURIUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"operatorDetails","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.OperatorDetails","components":[{"name":"earningsReceiver","type":"address","internalType":"address"},{"name":"delegationApprover","type":"address","internalType":"address"},{"name":"stakerOptOutWindowBlocks","type":"uint32","internalType":"uint32"}]}],"anonymous":false},{"type":"event","name":"OperatorSharesDecreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorSharesIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakerDelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerForceUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakerUndelegated","inputs":[{"name":"staker","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrategyWithdrawalDelayBlocksSet","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"previousValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalCompleted","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalMigrated","inputs":[{"name":"oldWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"newWithdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"WithdrawalQueued","inputs":[{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"withdrawal","type":"tuple","indexed":false,"internalType":"struct IDelegationManager.Withdrawal","components":[{"name":"staker","type":"address","internalType":"address"},{"name":"delegatedTo","type":"address","internalType":"address"},{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint32","internalType":"uint32"},{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"}]}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DELEGATION_APPROVAL_TYPEHASH()":"04a4f979","DOMAIN_TYPEHASH()":"20606b70","STAKER_DELEGATION_TYPEHASH()":"43377382","calculateCurrentStakerDelegationDigestHash(address,address,uint256)":"1bbce091","calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":"0b9f487a","calculateStakerDelegationDigestHash(address,uint256,address,uint256)":"c94b5111","calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":"597b36da","completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":"60d7faed","completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":"33404396","cumulativeWithdrawalsQueued(address)":"a1788484","decreaseDelegatedShares(address,address,uint256)":"132d4967","delegateTo(address,(bytes,uint256),bytes32)":"eea9064b","delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":"7f548071","delegatedTo(address)":"65da1264","delegationApprover(address)":"3cdeb5e0","delegationApproverSaltIsSpent(address,bytes32)":"bb45fef2","domainSeparator()":"f698da25","earningsReceiver(address)":"5f966f14","getOperatorShares(address,address[])":"90041347","getWithdrawalDelay(address[])":"0449ca39","increaseDelegatedShares(address,address,uint256)":"28a573ae","isDelegated(address)":"3e28391d","isOperator(address)":"6d70f7ae","migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[])":"5cfe8d2c","minWithdrawalDelayBlocks()":"c448feb8","modifyOperatorDetails((address,address,uint32))":"f16172b0","operatorDetails(address)":"c5e480db","operatorShares(address,address)":"778e55f3","queueWithdrawals((address[],uint256[],address)[])":"0dd8dd02","registerAsOperator((address,address,uint32),string)":"0f589e59","stakerNonce(address)":"29c77d4f","stakerOptOutWindowBlocks(address)":"16928365","strategyWithdrawalDelayBlocks(address)":"c488375a","undelegate(address)":"da8be864","updateOperatorMetadataURI(string)":"99be81c8"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"MinWithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorDetailsModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"OperatorMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"operatorDetails\",\"type\":\"tuple\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"OperatorSharesIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerForceUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakerUndelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"StrategyWithdrawalDelayBlocksSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"indexed\":false,\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"WithdrawalQueued\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKER_DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateCurrentStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateDelegationApprovalDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakerNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateStakerDelegationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"receiveAsTokens\",\"type\":\"bool\"}],\"name\":\"completeQueuedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegatedTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startBlock\",\"type\":\"uint32\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IDelegationManager.Withdrawal[]\",\"name\":\"withdrawals\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20[][]\",\"name\":\"tokens\",\"type\":\"address[][]\"},{\"internalType\":\"uint256[]\",\"name\":\"middlewareTimesIndexes\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"receiveAsTokens\",\"type\":\"bool[]\"}],\"name\":\"completeQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"cumulativeWithdrawalsQueued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"decreaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"stakerSignatureAndExpiry\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithExpiry\",\"name\":\"approverSignatureAndExpiry\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"approverSalt\",\"type\":\"bytes32\"}],\"name\":\"delegateToBySignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"delegatedTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"delegationApprover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegationApprover\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"delegationApproverSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"earningsReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"}],\"name\":\"getOperatorShares\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"}],\"name\":\"getWithdrawalDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"increaseDelegatedShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isDelegated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"name\":\"withdrawalsToQueue\",\"type\":\"tuple[]\"}],\"name\":\"migrateQueuedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minWithdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"newOperatorDetails\",\"type\":\"tuple\"}],\"name\":\"modifyOperatorDetails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"operatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct IDelegationManager.QueuedWithdrawalParams[]\",\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\"}],\"name\":\"queueWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"earningsReceiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegationApprover\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\"}],\"internalType\":\"struct IDelegationManager.OperatorDetails\",\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"registerAsOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"stakerOptOutWindowBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"strategyWithdrawalDelayBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateOperatorMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"OperatorMetadataURIUpdated(address,string)\":{\"details\":\"Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"params\":{\"withdrawal\":\"Is the withdrawal itself.\",\"withdrawalRoot\":\"Is the hash of the `withdrawal`.\"}}},\"kind\":\"dev\",\"methods\":{\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"params\":{\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"params\":{\"_delegationApprover\":\"the operator's `delegationApprover` who will be signing the delegationHash (in general)\",\"approverSalt\":\"A unique and single use value associated with the approver signature.\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account receiving delegated stake\",\"staker\":\"The account delegating their stake\"}},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"params\":{\"_stakerNonce\":\"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`\",\"expiry\":\"The desired expiry time of the staker's signature\",\"operator\":\"The operator who is being delegated to\",\"staker\":\"The signing staker\"}},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"details\":\"middlewareTimesIndex should be calculated off chain before calling this function by finding the first index that satisfies `slasher.canWithdraw`beaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.\",\"params\":{\"middlewareTimesIndex\":\"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array\",\"receiveAsTokens\":\"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.\",\"tokens\":\"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)\",\"withdrawal\":\"The Withdrawal to complete.\"}},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"details\":\"See `completeQueuedWithdrawal` for relevant dev tags\",\"params\":{\"middlewareTimesIndexes\":\"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.\",\"receiveAsTokens\":\"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.\",\"tokens\":\"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.\",\"withdrawals\":\"The Withdrawals to complete.\"}},\"cumulativeWithdrawalsQueued(address)\":{\"details\":\"This only increments (doesn't decrement), and is used to help ensure that otherwise identical withdrawals have unique hashes.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to decrease.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to decrease the delegated shares.\"}},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"details\":\"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"A unique single use value tied to an individual signature.\",\"approverSignatureAndExpiry\":\"Verifies the operator approves of this delegation\",\"operator\":\"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.\"}},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"details\":\"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs\",\"params\":{\"approverSalt\":\"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.\",\"approverSignatureAndExpiry\":\"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:\",\"operator\":\"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.\",\"staker\":\"The account delegating stake to an `operator` account\",\"stakerSignatureAndExpiry\":\"Signed data from the staker authorizing delegating stake to an operator\"}},\"delegatedTo(address)\":{\"details\":\"Note that returning address(0) indicates that the staker is not actively delegated to any operator.\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"details\":\"Salts are used in the `delegateTo` and `delegateToBySignature` functions. Note that these functions only process the delegationApprover's signature + the provided salt if the operator being delegated to has specified a nonzero address as their `delegationApprover`.\"},\"domainSeparator()\":{\"details\":\"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712.\"},\"getWithdrawalDelay(address[])\":{\"params\":{\"strategies\":\"The strategies to check withdrawal delays for\"}},\"increaseDelegatedShares(address,address,uint256)\":{\"details\":\"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.\",\"params\":{\"shares\":\"The number of shares to increase.\",\"staker\":\"The address to increase the delegated shares for their operator.\",\"strategy\":\"The strategy in which to increase the delegated shares.\"}},\"modifyOperatorDetails((address,address,uint32))\":{\"details\":\"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).\",\"params\":{\"newOperatorDetails\":\"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`.\"}},\"operatorShares(address,address)\":{\"details\":\"By design, the following invariant should hold for each Strategy: (operator's shares in delegation manager) = sum (shares above zero of all stakers delegated to operator) = sum (delegateable shares of all stakers delegated to the operator)\"},\"registerAsOperator((address,address,uint32),string)\":{\"details\":\"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \\\"delegated to themself\\\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"is a URI for the operator's metadata, i.e. a link providing more details on the operator.\",\"registeringOperatorDetails\":\"is the `OperatorDetails` for the operator.\"}},\"undelegate(address)\":{\"details\":\"Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified \\\"delegationApprover\\\"Reverts if the `staker` is already undelegated.\",\"params\":{\"staker\":\"The account to be undelegated.\"},\"returns\":{\"withdrawalRoot\":\"The root of the newly queued withdrawal, if a withdrawal was queued. Otherwise just bytes32(0).\"}},\"updateOperatorMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an operator\"}}},\"title\":\"DelegationManager\",\"version\":1},\"userdoc\":{\"events\":{\"MinWithdrawalDelayBlocksSet(uint256,uint256)\":{\"notice\":\"Emitted when the `minWithdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"OperatorDetailsModified(address,(address,address,uint32))\":{\"notice\":\"Emitted when an operator updates their OperatorDetails to @param newOperatorDetails\"},\"OperatorMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param operator indicates that they are updating their MetadataURI string\"},\"OperatorSharesDecreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are decreased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"OperatorSharesIncreased(address,address,address,uint256)\":{\"notice\":\"Emitted whenever an operator's shares are increased for a given strategy. Note that shares is the delta in the operator's shares.\"},\"StakerDelegated(address,address)\":{\"notice\":\"Emitted when @param staker delegates to @param operator.\"},\"StakerForceUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker is undelegated via a call not originating from the staker themself\"},\"StakerUndelegated(address,address)\":{\"notice\":\"Emitted when @param staker undelegates from @param operator.\"},\"StrategyWithdrawalDelayBlocksSet(address,uint256,uint256)\":{\"notice\":\"Emitted when the `strategyWithdrawalDelayBlocks` variable is modified from `previousValue` to `newValue`.\"},\"WithdrawalCompleted(bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is completed\"},\"WithdrawalMigrated(bytes32,bytes32)\":{\"notice\":\"Emitted when a queued withdrawal is *migrated* from the StrategyManager to the DelegationManager\"},\"WithdrawalQueued(bytes32,(address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Emitted when a new withdrawal is queued.\"}},\"kind\":\"user\",\"methods\":{\"DELEGATION_APPROVAL_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the DelegationApproval struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"STAKER_DELEGATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the StakerDelegation struct used by the contract\"},\"calculateCurrentStakerDelegationDigestHash(address,address,uint256)\":{\"notice\":\"Calculates the digestHash for a `staker` to sign to delegate to an `operator`\"},\"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions.\"},\"calculateStakerDelegationDigestHash(address,uint256,address,uint256)\":{\"notice\":\"Calculates the digest hash to be signed and used in the `delegateToBySignature` function\"},\"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))\":{\"notice\":\"Returns the keccak256 hash of `withdrawal`.\"},\"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)\":{\"notice\":\"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`\"},\"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])\":{\"notice\":\"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`\"},\"cumulativeWithdrawalsQueued(address)\":{\"notice\":\"Mapping: staker => cumulative number of queued withdrawals they have ever initiated.\"},\"decreaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Decreases a staker's delegated share balance in a strategy.\"},\"delegateTo(address,(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates their stake to an operator.\"},\"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)\":{\"notice\":\"Caller delegates a staker's stake to an operator with valid signatures from both parties.\"},\"delegatedTo(address)\":{\"notice\":\"returns the address of the operator that `staker` is delegated to.Mapping: staker => operator whom the staker is currently delegated to.\"},\"delegationApprover(address)\":{\"notice\":\"Returns the delegationApprover account for an operator\"},\"delegationApproverSaltIsSpent(address,bytes32)\":{\"notice\":\"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover.\"},\"domainSeparator()\":{\"notice\":\"Getter function for the current EIP-712 domain separator for this contract.\"},\"getOperatorShares(address,address[])\":{\"notice\":\"Given array of strategies, returns array of shares for the operator\"},\"getWithdrawalDelay(address[])\":{\"notice\":\"Given a list of strategies, return the minimum number of blocks that must pass to withdraw from all the inputted strategies. Return value is >= minWithdrawalDelayBlocks as this is the global min withdrawal delay.\"},\"increaseDelegatedShares(address,address,uint256)\":{\"notice\":\"Increases a staker's delegated share balance in a strategy.\"},\"isDelegated(address)\":{\"notice\":\"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise.\"},\"isOperator(address)\":{\"notice\":\"Returns true is an operator has previously registered for delegation.\"},\"minWithdrawalDelayBlocks()\":{\"notice\":\"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced). Note that strategies each have a separate withdrawal delay, which can be greater than this value. So the minimum number of blocks that must pass to withdraw a strategy is MAX(minWithdrawalDelayBlocks, strategyWithdrawalDelayBlocks[strategy])\"},\"modifyOperatorDetails((address,address,uint32))\":{\"notice\":\"Updates an operator's stored `OperatorDetails`.\"},\"operatorDetails(address)\":{\"notice\":\"Returns the OperatorDetails struct associated with an `operator`.\"},\"operatorShares(address,address)\":{\"notice\":\"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator.\"},\"queueWithdrawals((address[],uint256[],address)[])\":{\"notice\":\"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay.\"},\"registerAsOperator((address,address,uint32),string)\":{\"notice\":\"Registers the caller as an operator in EigenLayer.\"},\"stakerNonce(address)\":{\"notice\":\"Mapping: staker => number of signed delegation nonces (used in `delegateToBySignature`) from the staker that the contract has already checked\"},\"stakerOptOutWindowBlocks(address)\":{\"notice\":\"Returns the stakerOptOutWindowBlocks for an operator\"},\"strategyWithdrawalDelayBlocks(address)\":{\"notice\":\"Minimum delay enforced by this contract per Strategy for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced).\"},\"undelegate(address)\":{\"notice\":\"Undelegates the staker from the operator who they are delegated to. Puts the staker into the \\\"undelegation limbo\\\" mode of the EigenPodManager and queues a withdrawal of all of the staker's shares in the StrategyManager (to the staker), if necessary.\"},\"updateOperatorMetadataURI(string)\":{\"notice\":\"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThis is the contract for delegation in EigenLayer. The main functionalities of this contract are - enabling anyone to register as an operator in EigenLayer - allowing operators to specify parameters related to stakers who delegate to them - enabling any staker to delegate its stake to the operator of its choice (a given staker can only delegate to a single operator at a time) - enabling a staker to undelegate its assets from the operator it is delegated to (performed as part of the withdrawal process, initiated through the StrategyManager)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":\"IDelegationManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"MinWithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorDetailsModified","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"OperatorMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"struct IDelegationManager.OperatorDetails","name":"operatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}],"indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesDecreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"OperatorSharesIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerDelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerForceUndelegated","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"StakerUndelegated","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"previousValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"StrategyWithdrawalDelayBlocksSet","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"oldWithdrawalRoot","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"newWithdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalMigrated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false},{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"indexed":false}],"type":"event","name":"WithdrawalQueued","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DELEGATION_APPROVAL_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKER_DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateCurrentStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateDelegationApprovalDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"_stakerNonce","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateStakerDelegationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"},{"internalType":"bool","name":"receiveAsTokens","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawal"},{"inputs":[{"internalType":"struct IDelegationManager.Withdrawal[]","name":"withdrawals","type":"tuple[]","components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"delegatedTo","type":"address"},{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint32","name":"startBlock","type":"uint32"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}]},{"internalType":"contract IERC20[][]","name":"tokens","type":"address[][]"},{"internalType":"uint256[]","name":"middlewareTimesIndexes","type":"uint256[]"},{"internalType":"bool[]","name":"receiveAsTokens","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"completeQueuedWithdrawals"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"cumulativeWithdrawalsQueued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateTo"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"stakerSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"struct ISignatureUtils.SignatureWithExpiry","name":"approverSignatureAndExpiry","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes32","name":"approverSalt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"delegateToBySignature"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"delegatedTo","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"delegationApprover","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_delegationApprover","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"delegationApproverSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"earningsReceiver","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"}],"stateMutability":"view","type":"function","name":"getOperatorShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"}],"stateMutability":"view","type":"function","name":"getWithdrawalDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseDelegatedShares"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isDelegated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]","name":"withdrawalsToQueue","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawals"},{"inputs":[],"stateMutability":"view","type":"function","name":"minWithdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"newOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"modifyOperatorDetails"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorDetails","outputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"}],"stateMutability":"view","type":"function","name":"operatorShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IDelegationManager.QueuedWithdrawalParams[]","name":"queuedWithdrawalParams","type":"tuple[]","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"withdrawer","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"queueWithdrawals","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct IDelegationManager.OperatorDetails","name":"registeringOperatorDetails","type":"tuple","components":[{"internalType":"address","name":"earningsReceiver","type":"address"},{"internalType":"address","name":"delegationApprover","type":"address"},{"internalType":"uint32","name":"stakerOptOutWindowBlocks","type":"uint32"}]},{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerAsOperator"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"stakerNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"stakerOptOutWindowBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"}],"stateMutability":"view","type":"function","name":"strategyWithdrawalDelayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"undelegate","outputs":[{"internalType":"bytes32[]","name":"withdrawalRoot","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorMetadataURI"}],"devdoc":{"kind":"dev","methods":{"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"params":{"expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"params":{"_delegationApprover":"the operator's `delegationApprover` who will be signing the delegationHash (in general)","approverSalt":"A unique and single use value associated with the approver signature.","expiry":"Time after which the approver's signature becomes invalid","operator":"The account receiving delegated stake","staker":"The account delegating their stake"}},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"params":{"_stakerNonce":"The nonce of the staker. In practice we use the staker's current nonce, stored at `stakerNonce[staker]`","expiry":"The desired expiry time of the staker's signature","operator":"The operator who is being delegated to","staker":"The signing staker"}},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"details":"middlewareTimesIndex should be calculated off chain before calling this function by finding the first index that satisfies `slasher.canWithdraw`beaconChainETHStrategy shares are non-transferrable, so if `receiveAsTokens = false` and `withdrawal.withdrawer != withdrawal.staker`, note that any beaconChainETHStrategy shares in the `withdrawal` will be _returned to the staker_, rather than transferred to the withdrawer, unlike shares in any other strategies, which will be transferred to the withdrawer.","params":{"middlewareTimesIndex":"is the index in the operator that the staker who triggered the withdrawal was delegated to's middleware times array","receiveAsTokens":"If true, the shares specified in the withdrawal will be withdrawn from the specified strategies themselves and sent to the caller, through calls to `withdrawal.strategies[i].withdraw`. If false, then the shares in the specified strategies will simply be transferred to the caller directly.","tokens":"Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array. This input can be provided with zero length if `receiveAsTokens` is set to 'false' (since in that case, this input will be unused)","withdrawal":"The Withdrawal to complete."}},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"details":"See `completeQueuedWithdrawal` for relevant dev tags","params":{"middlewareTimesIndexes":"One index to reference per Withdrawal. See `completeQueuedWithdrawal` for the usage of a single index.","receiveAsTokens":"Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.","tokens":"Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.","withdrawals":"The Withdrawals to complete."}},"cumulativeWithdrawalsQueued(address)":{"details":"This only increments (doesn't decrement), and is used to help ensure that otherwise identical withdrawals have unique hashes."},"decreaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then decreases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to decrease.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to decrease the delegated shares."}},"delegateTo(address,(bytes,uint256),bytes32)":{"details":"The approverSignatureAndExpiry is used in the event that: 1) the operator's `delegationApprover` address is set to a non-zero value. AND 2) neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.In the event that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"A unique single use value tied to an individual signature.","approverSignatureAndExpiry":"Verifies the operator approves of this delegation","operator":"The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer."}},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"details":"If `staker` is an EOA, then `stakerSignature` is verified to be a valid ECDSA stakerSignature from `staker`, indicating their intention for this action.If `staker` is a contract, then `stakerSignature` will be checked according to EIP-1271.the operator's `delegationApprover` address is set to a non-zero value.neither the operator nor their `delegationApprover` is the `msg.sender`, since in the event that the operator or their delegationApprover is the `msg.sender`, then approval is assumed.This function will revert if the current `block.timestamp` is equal to or exceeds the expiryIn the case that `approverSignatureAndExpiry` is not checked, its content is ignored entirely; it's recommended to use an empty input in this case to save on complexity + gas costs","params":{"approverSalt":"Is a salt used to help guarantee signature uniqueness. Each salt can only be used once by a given approver.","approverSignatureAndExpiry":"is a parameter that will be used for verifying that the operator approves of this delegation action in the event that:","operator":"The account (`staker`) is delegating its assets to for use in serving applications built on EigenLayer.","staker":"The account delegating stake to an `operator` account","stakerSignatureAndExpiry":"Signed data from the staker authorizing delegating stake to an operator"}},"delegatedTo(address)":{"details":"Note that returning address(0) indicates that the staker is not actively delegated to any operator."},"delegationApproverSaltIsSpent(address,bytes32)":{"details":"Salts are used in the `delegateTo` and `delegateToBySignature` functions. Note that these functions only process the delegationApprover's signature + the provided salt if the operator being delegated to has specified a nonzero address as their `delegationApprover`."},"domainSeparator()":{"details":"The domain separator will change in the event of a fork that changes the ChainID.By introducing a domain separator the DApp developers are guaranteed that there can be no signature collision. for more detailed information please read EIP-712."},"getWithdrawalDelay(address[])":{"params":{"strategies":"The strategies to check withdrawal delays for"}},"increaseDelegatedShares(address,address,uint256)":{"details":"*If the staker is actively delegated*, then increases the `staker`'s delegated shares in `strategy` by `shares`. Otherwise does nothing.Callable only by the StrategyManager or EigenPodManager.","params":{"shares":"The number of shares to increase.","staker":"The address to increase the delegated shares for their operator.","strategy":"The strategy in which to increase the delegated shares."}},"modifyOperatorDetails((address,address,uint32))":{"details":"The caller must have previously registered as an operator in EigenLayer.This function will revert if the caller attempts to set their `earningsReceiver` to address(0).","params":{"newOperatorDetails":"is the updated `OperatorDetails` for the operator, to replace their current OperatorDetails`."}},"operatorShares(address,address)":{"details":"By design, the following invariant should hold for each Strategy: (operator's shares in delegation manager) = sum (shares above zero of all stakers delegated to operator) = sum (delegateable shares of all stakers delegated to the operator)"},"registerAsOperator((address,address,uint32),string)":{"details":"Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered \"delegated to themself\".This function will revert if the caller attempts to set their `earningsReceiver` to address(0).Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"is a URI for the operator's metadata, i.e. a link providing more details on the operator.","registeringOperatorDetails":"is the `OperatorDetails` for the operator."}},"undelegate(address)":{"details":"Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified \"delegationApprover\"Reverts if the `staker` is already undelegated.","params":{"staker":"The account to be undelegated."},"returns":{"withdrawalRoot":"The root of the newly queued withdrawal, if a withdrawal was queued. Otherwise just bytes32(0)."}},"updateOperatorMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"DELEGATION_APPROVAL_TYPEHASH()":{"notice":"The EIP-712 typehash for the DelegationApproval struct used by the contract"},"DOMAIN_TYPEHASH()":{"notice":"The EIP-712 typehash for the contract's domain"},"STAKER_DELEGATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the StakerDelegation struct used by the contract"},"calculateCurrentStakerDelegationDigestHash(address,address,uint256)":{"notice":"Calculates the digestHash for a `staker` to sign to delegate to an `operator`"},"calculateDelegationApprovalDigestHash(address,address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by the operator's delegationApprove and used in the `delegateTo` and `delegateToBySignature` functions."},"calculateStakerDelegationDigestHash(address,uint256,address,uint256)":{"notice":"Calculates the digest hash to be signed and used in the `delegateToBySignature` function"},"calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]))":{"notice":"Returns the keccak256 hash of `withdrawal`."},"completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool)":{"notice":"Used to complete the specified `withdrawal`. The caller must match `withdrawal.withdrawer`"},"completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])":{"notice":"Array-ified version of `completeQueuedWithdrawal`. Used to complete the specified `withdrawals`. The function caller must match `withdrawals[...].withdrawer`"},"cumulativeWithdrawalsQueued(address)":{"notice":"Mapping: staker => cumulative number of queued withdrawals they have ever initiated."},"decreaseDelegatedShares(address,address,uint256)":{"notice":"Decreases a staker's delegated share balance in a strategy."},"delegateTo(address,(bytes,uint256),bytes32)":{"notice":"Caller delegates their stake to an operator."},"delegateToBySignature(address,address,(bytes,uint256),(bytes,uint256),bytes32)":{"notice":"Caller delegates a staker's stake to an operator with valid signatures from both parties."},"delegatedTo(address)":{"notice":"returns the address of the operator that `staker` is delegated to.Mapping: staker => operator whom the staker is currently delegated to."},"delegationApprover(address)":{"notice":"Returns the delegationApprover account for an operator"},"delegationApproverSaltIsSpent(address,bytes32)":{"notice":"Mapping: delegationApprover => 32-byte salt => whether or not the salt has already been used by the delegationApprover."},"domainSeparator()":{"notice":"Getter function for the current EIP-712 domain separator for this contract."},"getOperatorShares(address,address[])":{"notice":"Given array of strategies, returns array of shares for the operator"},"getWithdrawalDelay(address[])":{"notice":"Given a list of strategies, return the minimum number of blocks that must pass to withdraw from all the inputted strategies. Return value is >= minWithdrawalDelayBlocks as this is the global min withdrawal delay."},"increaseDelegatedShares(address,address,uint256)":{"notice":"Increases a staker's delegated share balance in a strategy."},"isDelegated(address)":{"notice":"Returns 'true' if `staker` *is* actively delegated, and 'false' otherwise."},"isOperator(address)":{"notice":"Returns true is an operator has previously registered for delegation."},"minWithdrawalDelayBlocks()":{"notice":"Minimum delay enforced by this contract for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced). Note that strategies each have a separate withdrawal delay, which can be greater than this value. So the minimum number of blocks that must pass to withdraw a strategy is MAX(minWithdrawalDelayBlocks, strategyWithdrawalDelayBlocks[strategy])"},"modifyOperatorDetails((address,address,uint32))":{"notice":"Updates an operator's stored `OperatorDetails`."},"operatorDetails(address)":{"notice":"Returns the OperatorDetails struct associated with an `operator`."},"operatorShares(address,address)":{"notice":"returns the total number of shares in `strategy` that are delegated to `operator`.Mapping: operator => strategy => total number of shares in the strategy delegated to the operator."},"queueWithdrawals((address[],uint256[],address)[])":{"notice":"Allows a staker to withdraw some shares. Withdrawn shares/strategies are immediately removed from the staker. If the staker is delegated, withdrawn shares/strategies are also removed from their operator. All withdrawn shares/strategies are placed in a queue and can be fully withdrawn after a delay."},"registerAsOperator((address,address,uint32),string)":{"notice":"Registers the caller as an operator in EigenLayer."},"stakerNonce(address)":{"notice":"Mapping: staker => number of signed delegation nonces (used in `delegateToBySignature`) from the staker that the contract has already checked"},"stakerOptOutWindowBlocks(address)":{"notice":"Returns the stakerOptOutWindowBlocks for an operator"},"strategyWithdrawalDelayBlocks(address)":{"notice":"Minimum delay enforced by this contract per Strategy for completing queued withdrawals. Measured in blocks, and adjustable by this contract's owner, up to a maximum of `MAX_WITHDRAWAL_DELAY_BLOCKS`. Minimum value is 0 (i.e. no delay enforced)."},"undelegate(address)":{"notice":"Undelegates the staker from the operator who they are delegated to. Puts the staker into the \"undelegation limbo\" mode of the EigenPodManager and queues a withdrawal of all of the staker's shares in the StrategyManager (to the staker), if necessary."},"updateOperatorMetadataURI(string)":{"notice":"Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":"IDelegationManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file diff --git a/out/interfaces/IETHPOSDeposit.sol/IETHPOSDeposit.json b/out/interfaces/IETHPOSDeposit.sol/IETHPOSDeposit.json new file mode 100644 index 00000000..9aec60a8 --- /dev/null +++ b/out/interfaces/IETHPOSDeposit.sol/IETHPOSDeposit.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"deposit","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"withdrawal_credentials","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"deposit_data_root","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"get_deposit_count","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"get_deposit_root","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"DepositEvent","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"withdrawal_credentials","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"amount","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"signature","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"index","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deposit(bytes,bytes,bytes,bytes32)":"22895118","get_deposit_count()":"621fd130","get_deposit_root()":"c5f2892f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"withdrawal_credentials\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"amount\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"index\",\"type\":\"bytes\"}],\"name\":\"DepositEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"withdrawal_credentials\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"deposit_data_root\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_deposit_count\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"get_deposit_root\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deposit(bytes,bytes,bytes,bytes32)\":{\"params\":{\"deposit_data_root\":\"The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input.\",\"pubkey\":\"A BLS12-381 public key.\",\"signature\":\"A BLS12-381 signature.\",\"withdrawal_credentials\":\"Commitment to a public key for withdrawals.\"}},\"get_deposit_count()\":{\"returns\":{\"_0\":\"The deposit count encoded as a little endian 64-bit number.\"}},\"get_deposit_root()\":{\"returns\":{\"_0\":\"The deposit root hash.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"DepositEvent(bytes,bytes,bytes,bytes,bytes)\":{\"notice\":\"A processed deposit event.\"}},\"kind\":\"user\",\"methods\":{\"deposit(bytes,bytes,bytes,bytes32)\":{\"notice\":\"Submit a Phase 0 DepositData object.\"},\"get_deposit_count()\":{\"notice\":\"Query the current deposit count.\"},\"get_deposit_root()\":{\"notice\":\"Query the current deposit root hash.\"}},\"notice\":\"This is the Ethereum 2.0 deposit contract interface. For more information see the Phase 0 specification under https://github.com/ethereum/eth2.0-specs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":\"IETHPOSDeposit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes","indexed":false},{"internalType":"bytes","name":"withdrawal_credentials","type":"bytes","indexed":false},{"internalType":"bytes","name":"amount","type":"bytes","indexed":false},{"internalType":"bytes","name":"signature","type":"bytes","indexed":false},{"internalType":"bytes","name":"index","type":"bytes","indexed":false}],"type":"event","name":"DepositEvent","anonymous":false},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"withdrawal_credentials","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"deposit_data_root","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"get_deposit_count","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"get_deposit_root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"deposit(bytes,bytes,bytes,bytes32)":{"params":{"deposit_data_root":"The SHA-256 hash of the SSZ-encoded DepositData object. Used as a protection against malformed input.","pubkey":"A BLS12-381 public key.","signature":"A BLS12-381 signature.","withdrawal_credentials":"Commitment to a public key for withdrawals."}},"get_deposit_count()":{"returns":{"_0":"The deposit count encoded as a little endian 64-bit number."}},"get_deposit_root()":{"returns":{"_0":"The deposit root hash."}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(bytes,bytes,bytes,bytes32)":{"notice":"Submit a Phase 0 DepositData object."},"get_deposit_count()":{"notice":"Query the current deposit count."},"get_deposit_root()":{"notice":"Query the current deposit root hash."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":"IETHPOSDeposit"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"}},"version":1},"id":8} \ No newline at end of file diff --git a/out/interfaces/IEigenPod.sol/IEigenPod.json b/out/interfaces/IEigenPod.sol/IEigenPod.json new file mode 100644 index 00000000..d938f645 --- /dev/null +++ b/out/interfaces/IEigenPod.sol/IEigenPod.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"activateRestaking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"hasRestaked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mostRecentWithdrawalTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nonBeaconChainETHBalanceWei","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"podOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"provenWithdrawal","inputs":[{"name":"validatorPubkeyHash","type":"bytes32","internalType":"bytes32"},{"name":"slot","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recoverTokens","inputs":[{"name":"tokenList","type":"address[]","internalType":"contract IERC20[]"},{"name":"amountsToWithdraw","type":"uint256[]","internalType":"uint256[]"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatorPubkeyHashToInfo","inputs":[{"name":"validatorPubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPod.ValidatorInfo","components":[{"name":"validatorIndex","type":"uint64","internalType":"uint64"},{"name":"restakedBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"mostRecentBalanceUpdateTimestamp","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorPubkeyToInfo","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPod.ValidatorInfo","components":[{"name":"validatorIndex","type":"uint64","internalType":"uint64"},{"name":"restakedBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"mostRecentBalanceUpdateTimestamp","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"pubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPod.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"verifyAndProcessWithdrawals","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"withdrawalProofs","type":"tuple[]","internalType":"struct BeaconChainProofs.WithdrawalProof[]","components":[{"name":"withdrawalProof","type":"bytes","internalType":"bytes"},{"name":"slotProof","type":"bytes","internalType":"bytes"},{"name":"executionPayloadProof","type":"bytes","internalType":"bytes"},{"name":"timestampProof","type":"bytes","internalType":"bytes"},{"name":"historicalSummaryBlockRootProof","type":"bytes","internalType":"bytes"},{"name":"blockRootIndex","type":"uint64","internalType":"uint64"},{"name":"historicalSummaryIndex","type":"uint64","internalType":"uint64"},{"name":"withdrawalIndex","type":"uint64","internalType":"uint64"},{"name":"blockRoot","type":"bytes32","internalType":"bytes32"},{"name":"slotRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestampRoot","type":"bytes32","internalType":"bytes32"},{"name":"executionPayloadRoot","type":"bytes32","internalType":"bytes32"}]},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"},{"name":"withdrawalFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyBalanceUpdates","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyWithdrawalCredentials","inputs":[{"name":"oracleTimestamp","type":"uint64","internalType":"uint64"},{"name":"stateRootProof","type":"tuple","internalType":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"withdrawalCredentialProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawBeforeRestaking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawNonBeaconChainETHBalanceWei","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amountToWithdraw","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRestakedBeaconChainETH","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawableRestakedExecutionLayerGwei","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"EigenPodStaked","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"FullWithdrawalRedeemed","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"withdrawalTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawalAmountGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHReceived","inputs":[{"name":"amountReceived","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amountWithdrawn","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PartialWithdrawalRedeemed","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"withdrawalTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"partialWithdrawalAmountGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RestakedBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RestakingActivated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ValidatorBalanceUpdated","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"balanceTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"newValidatorBalanceGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ValidatorRestaked","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()":"1d905d5c","activateRestaking()":"0cd4649e","eigenPodManager()":"4665bcda","hasRestaked()":"3106ab53","initialize(address)":"c4d66de8","mostRecentWithdrawalTimestamp()":"87e0d289","nonBeaconChainETHBalanceWei()":"fe80b087","podOwner()":"0b18ff66","provenWithdrawal(bytes32,uint64)":"34bea20a","recoverTokens(address[],uint256[],address)":"dda3346c","stake(bytes,bytes,bytes32)":"9b4e4634","validatorPubkeyHashToInfo(bytes32)":"6fcd0e53","validatorPubkeyToInfo(bytes)":"b522538a","validatorStatus(bytes)":"58eaee79","validatorStatus(bytes32)":"7439841f","verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":"e251ef52","verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":"a50600f4","verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":"3f65cf19","withdrawBeforeRestaking()":"baa7145a","withdrawNonBeaconChainETHBalanceWei(address,uint256)":"e2c83445","withdrawRestakedBeaconChainETH(address,uint256)":"c4907442","withdrawableRestakedExecutionLayerGwei()":"3474aa16"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"}],\"name\":\"EigenPodStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalAmountGwei\",\"type\":\"uint64\"}],\"name\":\"FullWithdrawalRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceived\",\"type\":\"uint256\"}],\"name\":\"NonBeaconChainETHReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWithdrawn\",\"type\":\"uint256\"}],\"name\":\"NonBeaconChainETHWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"partialWithdrawalAmountGwei\",\"type\":\"uint64\"}],\"name\":\"PartialWithdrawalRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RestakedBeaconChainETHWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"RestakingActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"balanceTimestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\"}],\"name\":\"ValidatorBalanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"validatorIndex\",\"type\":\"uint40\"}],\"name\":\"ValidatorRestaked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateRestaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasRestaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mostRecentWithdrawalTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonBeaconChainETHBalanceWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"podOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"slot\",\"type\":\"uint64\"}],\"name\":\"provenWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokenList\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"recoverTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"depositDataRoot\",\"type\":\"bytes32\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"validatorPubkeyHashToInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"validatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"mostRecentBalanceUpdateTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IEigenPod.ValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"validatorPubkey\",\"type\":\"bytes\"}],\"name\":\"validatorPubkeyToInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"validatorIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"mostRecentBalanceUpdateTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"struct IEigenPod.ValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"validatorPubkey\",\"type\":\"bytes\"}],\"name\":\"validatorStatus\",\"outputs\":[{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"validatorStatus\",\"outputs\":[{\"internalType\":\"enum IEigenPod.VALIDATOR_STATUS\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"withdrawalProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"slotProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executionPayloadProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"timestampProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"historicalSummaryBlockRootProof\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"blockRootIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"historicalSummaryIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"withdrawalIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"slotRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"timestampRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"executionPayloadRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct BeaconChainProofs.WithdrawalProof[]\",\"name\":\"withdrawalProofs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"withdrawalFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyAndProcessWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint40[]\",\"name\":\"validatorIndices\",\"type\":\"uint40[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyBalanceUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"oracleTimestamp\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"beaconStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"internalType\":\"struct BeaconChainProofs.StateRootProof\",\"name\":\"stateRootProof\",\"type\":\"tuple\"},{\"internalType\":\"uint40[]\",\"name\":\"validatorIndices\",\"type\":\"uint40[]\"},{\"internalType\":\"bytes[]\",\"name\":\"withdrawalCredentialProofs\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[][]\",\"name\":\"validatorFields\",\"type\":\"bytes32[][]\"}],\"name\":\"verifyWithdrawalCredentials\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawBeforeRestaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawNonBeaconChainETHBalanceWei\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawRestakedBeaconChainETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Note that all beacon chain balances are stored as gwei within the beacon chain datastructures. We choose to account balances in terms of gwei in the EigenPod contract and convert to wei when making calls to other contracts\",\"kind\":\"dev\",\"methods\":{\"mostRecentWithdrawalTimestamp()\":{\"details\":\"This variable is only updated when the `withdrawBeforeRestaking` function is called, which can only occur before `hasRestaked` is set to true for this pod. Proofs for this pod are only valid against Beacon Chain state roots corresponding to timestamps after the stored `mostRecentWithdrawalTimestamp`.\"},\"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])\":{\"params\":{\"oracleTimestamp\":\"is the timestamp of the oracle slot that the withdrawal is being proven against\",\"validatorFields\":\"are the fields of the validators being proven\",\"validatorFieldsProofs\":\"is the proof of the validator's fields' in the validator tree\",\"withdrawalFields\":\"are the fields of the withdrawals being proven\",\"withdrawalProofs\":\"is the information needed to check the veracity of the block numbers and withdrawals being proven\"}},\"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])\":{\"details\":\"For more details on the Beacon Chain spec, see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator\",\"params\":{\"oracleTimestamp\":\"The oracleTimestamp whose state root the `proof` will be proven against. Must be within `VERIFY_BALANCE_UPDATE_WINDOW_SECONDS` of the current block.\",\"validatorFields\":\"are the fields of the \\\"Validator Container\\\", refer to consensus specs\",\"validatorFieldsProofs\":\"proofs against the `beaconStateRoot` for each validator in `validatorFields`\",\"validatorIndices\":\"is the list of indices of the validators being proven, refer to consensus specs \"}},\"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])\":{\"params\":{\"oracleTimestamp\":\"is the Beacon Chain timestamp whose state root the `proof` will be proven against.\",\"validatorFields\":\"are the fields of the \\\"Validator Container\\\", refer to consensus specs for details: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator\",\"validatorIndices\":\"is the list of indices of the validators being proven, refer to consensus specs\",\"withdrawalCredentialProofs\":\"is an array of proofs, where each proof proves each ETH validator's balance and withdrawal credentials against a beacon chain state root\"}},\"withdrawRestakedBeaconChainETH(address,uint256)\":{\"details\":\"The podOwner must have already proved sufficient withdrawals, so that this pod's `withdrawableRestakedExecutionLayerGwei` exceeds the `amountWei` input (when converted to GWEI).Reverts if `amountWei` is not a whole Gwei amount\"}},\"title\":\"The implementation contract used for restaking beacon chain ETH on EigenLayer\",\"version\":1},\"userdoc\":{\"events\":{\"EigenPodStaked(bytes)\":{\"notice\":\"Emitted when an ETH validator stakes via this eigenPod\"},\"FullWithdrawalRedeemed(uint40,uint64,address,uint64)\":{\"notice\":\"Emitted when an ETH validator is prove to have withdrawn from the beacon chain\"},\"NonBeaconChainETHReceived(uint256)\":{\"notice\":\"Emitted when ETH is received via the `receive` fallback\"},\"NonBeaconChainETHWithdrawn(address,uint256)\":{\"notice\":\"Emitted when ETH that was previously received via the `receive` fallback is withdrawn\"},\"PartialWithdrawalRedeemed(uint40,uint64,address,uint64)\":{\"notice\":\"Emitted when a partial withdrawal claim is successfully redeemed\"},\"RestakedBeaconChainETHWithdrawn(address,uint256)\":{\"notice\":\"Emitted when restaked beacon chain ETH is withdrawn from the eigenPod.\"},\"RestakingActivated(address)\":{\"notice\":\"Emitted when podOwner enables restaking\"},\"ValidatorBalanceUpdated(uint40,uint64,uint64)\":{\"notice\":\"Emitted when an ETH validator's balance is proven to be updated. Here newValidatorBalanceGwei\"},\"ValidatorRestaked(uint40)\":{\"notice\":\"Emitted when an ETH validator's withdrawal credentials are successfully verified to be pointed to this eigenPod\"}},\"kind\":\"user\",\"methods\":{\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()\":{\"notice\":\"The max amount of eth, in gwei, that can be restaked per validator\"},\"activateRestaking()\":{\"notice\":\"Called by the pod owner to activate restaking by withdrawing all existing ETH from the pod and preventing further withdrawals via \\\"withdrawBeforeRestaking()\\\"\"},\"eigenPodManager()\":{\"notice\":\"The single EigenPodManager for EigenLayer\"},\"hasRestaked()\":{\"notice\":\"an indicator of whether or not the podOwner has ever \\\"fully restaked\\\" by successfully calling `verifyCorrectWithdrawalCredentials`.\"},\"initialize(address)\":{\"notice\":\"Used to initialize the pointers to contracts crucial to the pod's functionality, in beacon proxy construction from EigenPodManager\"},\"mostRecentWithdrawalTimestamp()\":{\"notice\":\"The latest timestamp at which the pod owner withdrew the balance of the pod, via calling `withdrawBeforeRestaking`.\"},\"nonBeaconChainETHBalanceWei()\":{\"notice\":\"any ETH deposited into the EigenPod contract via the `receive` fallback function\"},\"podOwner()\":{\"notice\":\"The owner of this EigenPod\"},\"provenWithdrawal(bytes32,uint64)\":{\"notice\":\"mapping that tracks proven withdrawals\"},\"recoverTokens(address[],uint256[],address)\":{\"notice\":\"called by owner of a pod to remove any ERC20s deposited in the pod\"},\"stake(bytes,bytes,bytes32)\":{\"notice\":\"Called by EigenPodManager when the owner wants to create another ETH validator.\"},\"validatorPubkeyHashToInfo(bytes32)\":{\"notice\":\"Returns the validatorInfo struct for the provided pubkeyHash\"},\"validatorPubkeyToInfo(bytes)\":{\"notice\":\"Returns the validatorInfo struct for the provided pubkey\"},\"validatorStatus(bytes)\":{\"notice\":\"This returns the status of a given validator pubkey\"},\"validatorStatus(bytes32)\":{\"notice\":\"This returns the status of a given validator\"},\"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])\":{\"notice\":\"This function records full and partial withdrawals on behalf of one of the Ethereum validators for this EigenPod\"},\"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])\":{\"notice\":\"This function records an update (either increase or decrease) in the pod's balance in the StrategyManager. It also verifies a merkle proof of the validator's current beacon chain balance. \"},\"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])\":{\"notice\":\"This function verifies that the withdrawal credentials of validator(s) owned by the podOwner are pointed to this contract. It also verifies the effective balance of the validator. It verifies the provided proof of the ETH validator against the beacon chain state root, marks the validator as 'active' in EigenLayer, and credits the restaked ETH in Eigenlayer.\"},\"withdrawBeforeRestaking()\":{\"notice\":\"Called by the pod owner to withdraw the balance of the pod when `hasRestaked` is set to false\"},\"withdrawNonBeaconChainETHBalanceWei(address,uint256)\":{\"notice\":\"Called by the pod owner to withdraw the nonBeaconChainETHBalanceWei\"},\"withdrawRestakedBeaconChainETH(address,uint256)\":{\"notice\":\"Transfers `amountWei` in ether from this contract to the specified `recipient` addressCalled by EigenPodManager to withdrawBeaconChainETH that has been added to the EigenPod's balance due to a withdrawal from the beacon chain.\"},\"withdrawableRestakedExecutionLayerGwei()\":{\"notice\":\"the amount of execution layer ETH in this contract that is staked in EigenLayer (i.e. withdrawn from beaconchain but not EigenLayer),\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceThe main functionalities are: - creating new ETH validators with their withdrawal credentials pointed to this contract - proving from beacon chain state roots that withdrawal credentials are pointed to this contract - proving from beacon chain state roots the balances of ETH validators with their withdrawal credentials pointed to this contract - updating aggregate balances in the EigenPodManager - withdrawing eth when withdrawals are initiated\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":\"IEigenPod\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes","indexed":false}],"type":"event","name":"EigenPodStaked","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"withdrawalTimestamp","type":"uint64","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint64","name":"withdrawalAmountGwei","type":"uint64","indexed":false}],"type":"event","name":"FullWithdrawalRedeemed","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amountReceived","type":"uint256","indexed":false}],"type":"event","name":"NonBeaconChainETHReceived","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amountWithdrawn","type":"uint256","indexed":false}],"type":"event","name":"NonBeaconChainETHWithdrawn","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"withdrawalTimestamp","type":"uint64","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint64","name":"partialWithdrawalAmountGwei","type":"uint64","indexed":false}],"type":"event","name":"PartialWithdrawalRedeemed","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RestakedBeaconChainETHWithdrawn","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true}],"type":"event","name":"RestakingActivated","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false},{"internalType":"uint64","name":"balanceTimestamp","type":"uint64","indexed":false},{"internalType":"uint64","name":"newValidatorBalanceGwei","type":"uint64","indexed":false}],"type":"event","name":"ValidatorBalanceUpdated","anonymous":false},{"inputs":[{"internalType":"uint40","name":"validatorIndex","type":"uint40","indexed":false}],"type":"event","name":"ValidatorRestaked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"activateRestaking"},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hasRestaked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"mostRecentWithdrawalTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonBeaconChainETHBalanceWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"podOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"validatorPubkeyHash","type":"bytes32"},{"internalType":"uint64","name":"slot","type":"uint64"}],"stateMutability":"view","type":"function","name":"provenWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20[]","name":"tokenList","type":"address[]"},{"internalType":"uint256[]","name":"amountsToWithdraw","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"recoverTokens"},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"depositDataRoot","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"stake"},{"inputs":[{"internalType":"bytes32","name":"validatorPubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"validatorPubkeyHashToInfo","outputs":[{"internalType":"struct IEigenPod.ValidatorInfo","name":"","type":"tuple","components":[{"internalType":"uint64","name":"validatorIndex","type":"uint64"},{"internalType":"uint64","name":"restakedBalanceGwei","type":"uint64"},{"internalType":"uint64","name":"mostRecentBalanceUpdateTimestamp","type":"uint64"},{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes","name":"validatorPubkey","type":"bytes"}],"stateMutability":"view","type":"function","name":"validatorPubkeyToInfo","outputs":[{"internalType":"struct IEigenPod.ValidatorInfo","name":"","type":"tuple","components":[{"internalType":"uint64","name":"validatorIndex","type":"uint64"},{"internalType":"uint64","name":"restakedBalanceGwei","type":"uint64"},{"internalType":"uint64","name":"mostRecentBalanceUpdateTimestamp","type":"uint64"},{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"status","type":"uint8"}]}]},{"inputs":[{"internalType":"bytes","name":"validatorPubkey","type":"bytes"}],"stateMutability":"view","type":"function","name":"validatorStatus","outputs":[{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"pubkeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"validatorStatus","outputs":[{"internalType":"enum IEigenPod.VALIDATOR_STATUS","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"struct BeaconChainProofs.WithdrawalProof[]","name":"withdrawalProofs","type":"tuple[]","components":[{"internalType":"bytes","name":"withdrawalProof","type":"bytes"},{"internalType":"bytes","name":"slotProof","type":"bytes"},{"internalType":"bytes","name":"executionPayloadProof","type":"bytes"},{"internalType":"bytes","name":"timestampProof","type":"bytes"},{"internalType":"bytes","name":"historicalSummaryBlockRootProof","type":"bytes"},{"internalType":"uint64","name":"blockRootIndex","type":"uint64"},{"internalType":"uint64","name":"historicalSummaryIndex","type":"uint64"},{"internalType":"uint64","name":"withdrawalIndex","type":"uint64"},{"internalType":"bytes32","name":"blockRoot","type":"bytes32"},{"internalType":"bytes32","name":"slotRoot","type":"bytes32"},{"internalType":"bytes32","name":"timestampRoot","type":"bytes32"},{"internalType":"bytes32","name":"executionPayloadRoot","type":"bytes32"}]},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"},{"internalType":"bytes32[][]","name":"withdrawalFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyAndProcessWithdrawals"},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"uint40[]","name":"validatorIndices","type":"uint40[]"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"bytes[]","name":"validatorFieldsProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyBalanceUpdates"},{"inputs":[{"internalType":"uint64","name":"oracleTimestamp","type":"uint64"},{"internalType":"struct BeaconChainProofs.StateRootProof","name":"stateRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"beaconStateRoot","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"}]},{"internalType":"uint40[]","name":"validatorIndices","type":"uint40[]"},{"internalType":"bytes[]","name":"withdrawalCredentialProofs","type":"bytes[]"},{"internalType":"bytes32[][]","name":"validatorFields","type":"bytes32[][]"}],"stateMutability":"nonpayable","type":"function","name":"verifyWithdrawalCredentials"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawBeforeRestaking"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawNonBeaconChainETHBalanceWei"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRestakedBeaconChainETH"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawableRestakedExecutionLayerGwei","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{"mostRecentWithdrawalTimestamp()":{"details":"This variable is only updated when the `withdrawBeforeRestaking` function is called, which can only occur before `hasRestaked` is set to true for this pod. Proofs for this pod are only valid against Beacon Chain state roots corresponding to timestamps after the stored `mostRecentWithdrawalTimestamp`."},"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":{"params":{"oracleTimestamp":"is the timestamp of the oracle slot that the withdrawal is being proven against","validatorFields":"are the fields of the validators being proven","validatorFieldsProofs":"is the proof of the validator's fields' in the validator tree","withdrawalFields":"are the fields of the withdrawals being proven","withdrawalProofs":"is the information needed to check the veracity of the block numbers and withdrawals being proven"}},"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":{"details":"For more details on the Beacon Chain spec, see: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator","params":{"oracleTimestamp":"The oracleTimestamp whose state root the `proof` will be proven against. Must be within `VERIFY_BALANCE_UPDATE_WINDOW_SECONDS` of the current block.","validatorFields":"are the fields of the \"Validator Container\", refer to consensus specs","validatorFieldsProofs":"proofs against the `beaconStateRoot` for each validator in `validatorFields`","validatorIndices":"is the list of indices of the validators being proven, refer to consensus specs "}},"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":{"params":{"oracleTimestamp":"is the Beacon Chain timestamp whose state root the `proof` will be proven against.","validatorFields":"are the fields of the \"Validator Container\", refer to consensus specs for details: https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator","validatorIndices":"is the list of indices of the validators being proven, refer to consensus specs","withdrawalCredentialProofs":"is an array of proofs, where each proof proves each ETH validator's balance and withdrawal credentials against a beacon chain state root"}},"withdrawRestakedBeaconChainETH(address,uint256)":{"details":"The podOwner must have already proved sufficient withdrawals, so that this pod's `withdrawableRestakedExecutionLayerGwei` exceeds the `amountWei` input (when converted to GWEI).Reverts if `amountWei` is not a whole Gwei amount"}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR()":{"notice":"The max amount of eth, in gwei, that can be restaked per validator"},"activateRestaking()":{"notice":"Called by the pod owner to activate restaking by withdrawing all existing ETH from the pod and preventing further withdrawals via \"withdrawBeforeRestaking()\""},"eigenPodManager()":{"notice":"The single EigenPodManager for EigenLayer"},"hasRestaked()":{"notice":"an indicator of whether or not the podOwner has ever \"fully restaked\" by successfully calling `verifyCorrectWithdrawalCredentials`."},"initialize(address)":{"notice":"Used to initialize the pointers to contracts crucial to the pod's functionality, in beacon proxy construction from EigenPodManager"},"mostRecentWithdrawalTimestamp()":{"notice":"The latest timestamp at which the pod owner withdrew the balance of the pod, via calling `withdrawBeforeRestaking`."},"nonBeaconChainETHBalanceWei()":{"notice":"any ETH deposited into the EigenPod contract via the `receive` fallback function"},"podOwner()":{"notice":"The owner of this EigenPod"},"provenWithdrawal(bytes32,uint64)":{"notice":"mapping that tracks proven withdrawals"},"recoverTokens(address[],uint256[],address)":{"notice":"called by owner of a pod to remove any ERC20s deposited in the pod"},"stake(bytes,bytes,bytes32)":{"notice":"Called by EigenPodManager when the owner wants to create another ETH validator."},"validatorPubkeyHashToInfo(bytes32)":{"notice":"Returns the validatorInfo struct for the provided pubkeyHash"},"validatorPubkeyToInfo(bytes)":{"notice":"Returns the validatorInfo struct for the provided pubkey"},"validatorStatus(bytes)":{"notice":"This returns the status of a given validator pubkey"},"validatorStatus(bytes32)":{"notice":"This returns the status of a given validator"},"verifyAndProcessWithdrawals(uint64,(bytes32,bytes),(bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[],bytes[],bytes32[][],bytes32[][])":{"notice":"This function records full and partial withdrawals on behalf of one of the Ethereum validators for this EigenPod"},"verifyBalanceUpdates(uint64,uint40[],(bytes32,bytes),bytes[],bytes32[][])":{"notice":"This function records an update (either increase or decrease) in the pod's balance in the StrategyManager. It also verifies a merkle proof of the validator's current beacon chain balance. "},"verifyWithdrawalCredentials(uint64,(bytes32,bytes),uint40[],bytes[],bytes32[][])":{"notice":"This function verifies that the withdrawal credentials of validator(s) owned by the podOwner are pointed to this contract. It also verifies the effective balance of the validator. It verifies the provided proof of the ETH validator against the beacon chain state root, marks the validator as 'active' in EigenLayer, and credits the restaked ETH in Eigenlayer."},"withdrawBeforeRestaking()":{"notice":"Called by the pod owner to withdraw the balance of the pod when `hasRestaked` is set to false"},"withdrawNonBeaconChainETHBalanceWei(address,uint256)":{"notice":"Called by the pod owner to withdraw the nonBeaconChainETHBalanceWei"},"withdrawRestakedBeaconChainETH(address,uint256)":{"notice":"Transfers `amountWei` in ether from this contract to the specified `recipient` addressCalled by EigenPodManager to withdrawBeaconChainETH that has been added to the EigenPod's balance due to a withdrawal from the beacon chain."},"withdrawableRestakedExecutionLayerGwei()":{"notice":"the amount of execution layer ETH in this contract that is staked in EigenLayer (i.e. withdrawn from beaconchain but not EigenLayer),"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":"IEigenPod"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":9} \ No newline at end of file diff --git a/out/interfaces/IEigenPodManager.sol/IEigenPodManager.json b/out/interfaces/IEigenPodManager.sol/IEigenPodManager.json new file mode 100644 index 00000000..35bace6d --- /dev/null +++ b/out/interfaces/IEigenPodManager.sol/IEigenPodManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"beaconChainOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeaconChainOracle"}],"stateMutability":"view"},{"type":"function","name":"createPod","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"denebForkTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eigenPodBeacon","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeacon"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"stateMutability":"view"},{"type":"function","name":"getBlockRootAtTimestamp","inputs":[{"name":"timestamp","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"hasPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"numPods","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ownerToPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"podOwnerShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"recordBeaconChainETHBalanceUpdate","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"sharesDelta","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDenebForkTimestamp","inputs":[{"name":"newDenebForkTimestamp","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBeaconChainOracle","inputs":[{"name":"newBeaconChainOracle","type":"address","internalType":"contract IBeaconChainOracle"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawSharesAsTokens","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"destination","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BeaconChainETHDeposited","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BeaconChainETHWithdrawalCompleted","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint96","indexed":false,"internalType":"uint96"},{"name":"delegatedAddress","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconOracleUpdated","inputs":[{"name":"newOracleAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DenebForkTimestampUpdated","inputs":[{"name":"newValue","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"PodDeployed","inputs":[{"name":"eigenPod","type":"address","indexed":true,"internalType":"address"},{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PodSharesUpdated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"sharesDelta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addShares(address,uint256)":"0e81073c","beaconChainETHStrategy()":"9104c319","beaconChainOracle()":"c052bd61","createPod()":"84d81062","denebForkTimestamp()":"44e71c80","eigenPodBeacon()":"292b7b2b","ethPOS()":"74cdd798","getBlockRootAtTimestamp(uint64)":"d1c64cc9","getPod(address)":"a38406a3","hasPod(address)":"f6848d24","numPods()":"a6a509be","ownerToPod(address)":"9ba06275","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","podOwnerShares(address)":"60f4062b","recordBeaconChainETHBalanceUpdate(address,int256)":"c2c51c40","removeShares(address,uint256)":"beffbb89","setDenebForkTimestamp(uint64)":"463db038","setPauserRegistry(address)":"10d67a2f","slasher()":"b1344271","stake(bytes,bytes,bytes32)":"9b4e4634","strategyManager()":"39b70e38","unpause(uint256)":"fabc1cbc","updateBeaconChainOracle(address)":"c1de3aef","withdrawSharesAsTokens(address,address,uint256)":"387b1300"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BeaconChainETHDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"BeaconChainETHWithdrawalCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOracleAddress\",\"type\":\"address\"}],\"name\":\"BeaconOracleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newValue\",\"type\":\"uint64\"}],\"name\":\"DenebForkTimestampUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"eigenPod\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"PodDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"sharesDelta\",\"type\":\"int256\"}],\"name\":\"PodSharesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"addShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainETHStrategy\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beaconChainOracle\",\"outputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createPod\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denebForkTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodBeacon\",\"outputs\":[{\"internalType\":\"contract IBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ethPOS\",\"outputs\":[{\"internalType\":\"contract IETHPOSDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"getBlockRootAtTimestamp\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"getPod\",\"outputs\":[{\"internalType\":\"contract IEigenPod\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"hasPod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numPods\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"ownerToPod\",\"outputs\":[{\"internalType\":\"contract IEigenPod\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"}],\"name\":\"podOwnerShares\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"sharesDelta\",\"type\":\"int256\"}],\"name\":\"recordBeaconChainETHBalanceUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"removeShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newDenebForkTimestamp\",\"type\":\"uint64\"}],\"name\":\"setDenebForkTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"depositDataRoot\",\"type\":\"bytes32\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IBeaconChainOracle\",\"name\":\"newBeaconChainOracle\",\"type\":\"address\"}],\"name\":\"updateBeaconChainOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"podOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"withdrawSharesAsTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"addShares(address,uint256)\":{\"details\":\"Returns the number of shares added to `podOwnerShares[podOwner]` above zero, which will be less than the `shares` input in the event that the podOwner has an existing shares deficit (i.e. `podOwnerShares[podOwner]` starts below zero)Reverts if `shares` is not a whole Gwei amount\"},\"createPod()\":{\"details\":\"Function will revert if the `msg.sender` already has an EigenPod.Returns EigenPod address \"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"podOwnerShares(address)\":{\"details\":\"The share amount can become negative. This is necessary to accommodate the fact that a pod owner's virtual beacon chain ETH shares can decrease between the pod owner queuing and completing a withdrawal. When the pod owner's shares would otherwise increase, this \\\"deficit\\\" is decreased first _instead_. Likewise, when a withdrawal is completed, this \\\"deficit\\\" is decreased and the withdrawal amount is decreased; We can think of this as the withdrawal \\\"paying off the deficit\\\".\"},\"recordBeaconChainETHBalanceUpdate(address,int256)\":{\"details\":\"Callable only by the podOwner's EigenPod contract.Reverts if `sharesDelta` is not a whole Gwei amount\",\"params\":{\"podOwner\":\"is the pod owner whose balance is being updated.\",\"sharesDelta\":\"is the change in podOwner's beaconChainETHStrategy shares\"}},\"removeShares(address,uint256)\":{\"details\":\"This function reverts if it would result in `podOwnerShares[podOwner]` being less than zero, i.e. it is forbidden for this function to result in the `podOwner` incurring a \\\"share deficit\\\". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive shares from the operator to whom the staker is delegated.Reverts if `shares` is not a whole Gwei amount\"},\"setDenebForkTimestamp(uint64)\":{\"details\":\"this function is designed to be called twice. Once, it is set to type(uint64).max prior to the actual deneb fork timestamp being set, and then the second time it is set to the actual deneb fork timestamp.\"},\"stake(bytes,bytes,bytes32)\":{\"params\":{\"depositDataRoot\":\"The root/hash of the deposit data for the validator's deposit.\",\"pubkey\":\"The 48 bytes public key of the beacon chain validator.\",\"signature\":\"The validator's signature of the deposit data.\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateBeaconChainOracle(address)\":{\"details\":\"Callable only by the owner of this contract (i.e. governance)\",\"params\":{\"newBeaconChainOracle\":\"is the new oracle contract being pointed to\"}},\"withdrawSharesAsTokens(address,address,uint256)\":{\"details\":\"Prioritizes decreasing the podOwner's share deficit, if they have oneReverts if `shares` is not a whole Gwei amount\"}},\"title\":\"Interface for factory that creates and manages solo staking pods that have their withdrawal credentials pointed to EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"BeaconChainETHDeposited(address,uint256)\":{\"notice\":\"Emitted to notify a deposit of beacon chain ETH recorded in the strategy manager\"},\"BeaconChainETHWithdrawalCompleted(address,uint256,uint96,address,address,bytes32)\":{\"notice\":\"Emitted when a withdrawal of beacon chain ETH is completed\"},\"BeaconOracleUpdated(address)\":{\"notice\":\"Emitted to notify the update of the beaconChainOracle address\"},\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"PodDeployed(address,address)\":{\"notice\":\"Emitted to notify the deployment of an EigenPod\"},\"PodSharesUpdated(address,int256)\":{\"notice\":\"Emitted when the balance of an EigenPod is updated\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"addShares(address,uint256)\":{\"notice\":\"Increases the `podOwner`'s shares by `shares`, paying off deficit if possible. Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue\"},\"beaconChainETHStrategy()\":{\"notice\":\"returns canonical, virtual beaconChainETH strategy\"},\"beaconChainOracle()\":{\"notice\":\"Oracle contract that provides updates to the beacon chain's state\"},\"createPod()\":{\"notice\":\"Creates an EigenPod for the sender.\"},\"denebForkTimestamp()\":{\"notice\":\"the deneb hard fork timestamp used to determine which proof path to use for proving a withdrawal\"},\"eigenPodBeacon()\":{\"notice\":\"Beacon proxy to which the EigenPods point\"},\"ethPOS()\":{\"notice\":\"The ETH2 Deposit Contract\"},\"getBlockRootAtTimestamp(uint64)\":{\"notice\":\"Returns the beacon block root at `timestamp`. Reverts if the Beacon block root at `timestamp` has not yet been finalized.\"},\"getPod(address)\":{\"notice\":\"Returns the address of the `podOwner`'s EigenPod (whether it is deployed yet or not).\"},\"hasPod(address)\":{\"notice\":\"Returns 'true' if the `podOwner` has created an EigenPod, and 'false' otherwise.\"},\"numPods()\":{\"notice\":\"Returns the number of EigenPods that have been created\"},\"ownerToPod(address)\":{\"notice\":\"Returns the address of the `podOwner`'s EigenPod if it has been deployed.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"podOwnerShares(address)\":{\"notice\":\"Mapping from Pod owner owner to the number of shares they have in the virtual beacon chain ETH strategy.\"},\"recordBeaconChainETHBalanceUpdate(address,int256)\":{\"notice\":\"Changes the `podOwner`'s shares by `sharesDelta` and performs a call to the DelegationManager to ensure that delegated shares are also tracked correctly\"},\"removeShares(address,uint256)\":{\"notice\":\"Used by the DelegationManager to remove a pod owner's shares while they're in the withdrawal queue. Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero.\"},\"setDenebForkTimestamp(uint64)\":{\"notice\":\"setting the deneb hard fork timestamp by the eigenPodManager owner\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"slasher()\":{\"notice\":\"EigenLayer's Slasher contract\"},\"stake(bytes,bytes,bytes32)\":{\"notice\":\"Stakes for a new beacon chain validator on the sender's EigenPod. Also creates an EigenPod for the sender if they don't have one already.\"},\"strategyManager()\":{\"notice\":\"EigenLayer's StrategyManager contract\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateBeaconChainOracle(address)\":{\"notice\":\"Updates the oracle contract that provides the beacon chain state root\"},\"withdrawSharesAsTokens(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to complete a withdrawal, sending tokens to some destination address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":\"IEigenPodManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BeaconChainETHDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint96","name":"nonce","type":"uint96","indexed":false},{"internalType":"address","name":"delegatedAddress","type":"address","indexed":false},{"internalType":"address","name":"withdrawer","type":"address","indexed":false},{"internalType":"bytes32","name":"withdrawalRoot","type":"bytes32","indexed":false}],"type":"event","name":"BeaconChainETHWithdrawalCompleted","anonymous":false},{"inputs":[{"internalType":"address","name":"newOracleAddress","type":"address","indexed":true}],"type":"event","name":"BeaconOracleUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64","indexed":false}],"type":"event","name":"DenebForkTimestampUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"eigenPod","type":"address","indexed":true},{"internalType":"address","name":"podOwner","type":"address","indexed":true}],"type":"event","name":"PodDeployed","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address","indexed":true},{"internalType":"int256","name":"sharesDelta","type":"int256","indexed":false}],"type":"event","name":"PodSharesUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainETHStrategy","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"beaconChainOracle","outputs":[{"internalType":"contract IBeaconChainOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"createPod","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denebForkTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodBeacon","outputs":[{"internalType":"contract IBeacon","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ethPOS","outputs":[{"internalType":"contract IETHPOSDeposit","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlockRootAtTimestamp","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"getPod","outputs":[{"internalType":"contract IEigenPod","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"hasPod","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numPods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"ownerToPod","outputs":[{"internalType":"contract IEigenPod","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"}],"stateMutability":"view","type":"function","name":"podOwnerShares","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"int256","name":"sharesDelta","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"recordBeaconChainETHBalanceUpdate"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeShares"},{"inputs":[{"internalType":"uint64","name":"newDenebForkTimestamp","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDenebForkTimestamp"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"pubkey","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"depositDataRoot","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"stake"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"contract IBeaconChainOracle","name":"newBeaconChainOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateBeaconChainOracle"},{"inputs":[{"internalType":"address","name":"podOwner","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawSharesAsTokens"}],"devdoc":{"kind":"dev","methods":{"addShares(address,uint256)":{"details":"Returns the number of shares added to `podOwnerShares[podOwner]` above zero, which will be less than the `shares` input in the event that the podOwner has an existing shares deficit (i.e. `podOwnerShares[podOwner]` starts below zero)Reverts if `shares` is not a whole Gwei amount"},"createPod()":{"details":"Function will revert if the `msg.sender` already has an EigenPod.Returns EigenPod address "},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"podOwnerShares(address)":{"details":"The share amount can become negative. This is necessary to accommodate the fact that a pod owner's virtual beacon chain ETH shares can decrease between the pod owner queuing and completing a withdrawal. When the pod owner's shares would otherwise increase, this \"deficit\" is decreased first _instead_. Likewise, when a withdrawal is completed, this \"deficit\" is decreased and the withdrawal amount is decreased; We can think of this as the withdrawal \"paying off the deficit\"."},"recordBeaconChainETHBalanceUpdate(address,int256)":{"details":"Callable only by the podOwner's EigenPod contract.Reverts if `sharesDelta` is not a whole Gwei amount","params":{"podOwner":"is the pod owner whose balance is being updated.","sharesDelta":"is the change in podOwner's beaconChainETHStrategy shares"}},"removeShares(address,uint256)":{"details":"This function reverts if it would result in `podOwnerShares[podOwner]` being less than zero, i.e. it is forbidden for this function to result in the `podOwner` incurring a \"share deficit\". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive shares from the operator to whom the staker is delegated.Reverts if `shares` is not a whole Gwei amount"},"setDenebForkTimestamp(uint64)":{"details":"this function is designed to be called twice. Once, it is set to type(uint64).max prior to the actual deneb fork timestamp being set, and then the second time it is set to the actual deneb fork timestamp."},"stake(bytes,bytes,bytes32)":{"params":{"depositDataRoot":"The root/hash of the deposit data for the validator's deposit.","pubkey":"The 48 bytes public key of the beacon chain validator.","signature":"The validator's signature of the deposit data."}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateBeaconChainOracle(address)":{"details":"Callable only by the owner of this contract (i.e. governance)","params":{"newBeaconChainOracle":"is the new oracle contract being pointed to"}},"withdrawSharesAsTokens(address,address,uint256)":{"details":"Prioritizes decreasing the podOwner's share deficit, if they have oneReverts if `shares` is not a whole Gwei amount"}},"version":1},"userdoc":{"kind":"user","methods":{"addShares(address,uint256)":{"notice":"Increases the `podOwner`'s shares by `shares`, paying off deficit if possible. Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue"},"beaconChainETHStrategy()":{"notice":"returns canonical, virtual beaconChainETH strategy"},"beaconChainOracle()":{"notice":"Oracle contract that provides updates to the beacon chain's state"},"createPod()":{"notice":"Creates an EigenPod for the sender."},"denebForkTimestamp()":{"notice":"the deneb hard fork timestamp used to determine which proof path to use for proving a withdrawal"},"eigenPodBeacon()":{"notice":"Beacon proxy to which the EigenPods point"},"ethPOS()":{"notice":"The ETH2 Deposit Contract"},"getBlockRootAtTimestamp(uint64)":{"notice":"Returns the beacon block root at `timestamp`. Reverts if the Beacon block root at `timestamp` has not yet been finalized."},"getPod(address)":{"notice":"Returns the address of the `podOwner`'s EigenPod (whether it is deployed yet or not)."},"hasPod(address)":{"notice":"Returns 'true' if the `podOwner` has created an EigenPod, and 'false' otherwise."},"numPods()":{"notice":"Returns the number of EigenPods that have been created"},"ownerToPod(address)":{"notice":"Returns the address of the `podOwner`'s EigenPod if it has been deployed."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"podOwnerShares(address)":{"notice":"Mapping from Pod owner owner to the number of shares they have in the virtual beacon chain ETH strategy."},"recordBeaconChainETHBalanceUpdate(address,int256)":{"notice":"Changes the `podOwner`'s shares by `sharesDelta` and performs a call to the DelegationManager to ensure that delegated shares are also tracked correctly"},"removeShares(address,uint256)":{"notice":"Used by the DelegationManager to remove a pod owner's shares while they're in the withdrawal queue. Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero."},"setDenebForkTimestamp(uint64)":{"notice":"setting the deneb hard fork timestamp by the eigenPodManager owner"},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"slasher()":{"notice":"EigenLayer's Slasher contract"},"stake(bytes,bytes,bytes32)":{"notice":"Stakes for a new beacon chain validator on the sender's EigenPod. Also creates an EigenPod for the sender if they don't have one already."},"strategyManager()":{"notice":"EigenLayer's StrategyManager contract"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateBeaconChainOracle(address)":{"notice":"Updates the oracle contract that provides the beacon chain state root"},"withdrawSharesAsTokens(address,address,uint256)":{"notice":"Used by the DelegationManager to complete a withdrawal, sending tokens to some destination address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":"IEigenPodManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":10} \ No newline at end of file diff --git a/out/interfaces/IPausable.sol/IPausable.json b/out/interfaces/IPausable.sol/IPausable.json new file mode 100644 index 00000000..87eba950 --- /dev/null +++ b/out/interfaces/IPausable.sol/IPausable.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","setPauserRegistry(address)":"10d67a2f","unpause(uint256)":"fabc1cbc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Pausability is implemented using a uint256, which allows up to 256 different single bit-flags; each bit can potentially pause different functionality. Inspiration for this was taken from the NearBridge design here https://etherscan.io/address/0x3FEFc5A4B1c02f21cBc8D3613643ba0635b9a873#code. For the `pause` and `unpause` functions we've implemented, if you pause, you can only flip (any number of) switches to on/1 (aka \\\"paused\\\"), and if you unpause, you can only flip (any number of) switches to off/0 (aka \\\"paused\\\"). If you want a pauseXYZ function that just flips a single bit / \\\"pausing flag\\\", it will: 1) 'bit-wise and' (aka `&`) a flag with the current paused state (as a uint256) 2) update the paused state to this new valueWe note as well that we have chosen to identify flags by their *bit index* as opposed to their numerical value, so, e.g. defining `DEPOSITS_PAUSED = 3` indicates specifically that if the *third bit* of `_paused` is flipped -- i.e. it is a '1' -- then deposits should be paused\",\"kind\":\"dev\",\"methods\":{\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}}},\"title\":\"Adds pausability to a contract, with pausing & unpausing controlled by the `pauser` and `unpauser` of a PauserRegistry contract.\",\"version\":1},\"userdoc\":{\"events\":{\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceContracts that inherit from this contract may define their own `pause` and `unpause` (and/or related) functions. These functions should be permissioned as \\\"onlyPauser\\\" which defers to a `PauserRegistry` for determining access control.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":\"IPausable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}}},"version":1},"userdoc":{"kind":"user","methods":{"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":"IPausable"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"}},"version":1},"id":11} \ No newline at end of file diff --git a/out/interfaces/IPauserRegistry.sol/IPauserRegistry.json b/out/interfaces/IPauserRegistry.sol/IPauserRegistry.json new file mode 100644 index 00000000..2b86f517 --- /dev/null +++ b/out/interfaces/IPauserRegistry.sol/IPauserRegistry.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"isPauser","inputs":[{"name":"pauser","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unpauser","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"PauserStatusChanged","inputs":[{"name":"pauser","type":"address","indexed":false,"internalType":"address"},{"name":"canPause","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"UnpauserChanged","inputs":[{"name":"previousUnpauser","type":"address","indexed":false,"internalType":"address"},{"name":"newUnpauser","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isPauser(address)":"46fbf68e","unpauser()":"eab66d7a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"canPause\",\"type\":\"bool\"}],\"name\":\"PauserStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousUnpauser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newUnpauser\",\"type\":\"address\"}],\"name\":\"UnpauserChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for the `PauserRegistry` contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isPauser(address)\":{\"notice\":\"Mapping of addresses to whether they hold the pauser role.\"},\"unpauser()\":{\"notice\":\"Unique address that holds the unpauser role. Capable of changing *both* the pauser and unpauser addresses.\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":\"IPauserRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"pauser","type":"address","indexed":false},{"internalType":"bool","name":"canPause","type":"bool","indexed":false}],"type":"event","name":"PauserStatusChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"previousUnpauser","type":"address","indexed":false},{"internalType":"address","name":"newUnpauser","type":"address","indexed":false}],"type":"event","name":"UnpauserChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"pauser","type":"address"}],"stateMutability":"view","type":"function","name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"unpauser","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"isPauser(address)":{"notice":"Mapping of addresses to whether they hold the pauser role."},"unpauser()":{"notice":"Unique address that holds the unpauser role. Capable of changing *both* the pauser and unpauser addresses."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":"IPauserRegistry"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"}},"version":1},"id":12} \ No newline at end of file diff --git a/out/interfaces/ISignatureUtils.sol/ISignatureUtils.json b/out/interfaces/ISignatureUtils.sol/ISignatureUtils.json new file mode 100644 index 00000000..3065e028 --- /dev/null +++ b/out/interfaces/ISignatureUtils.sol/ISignatureUtils.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"The interface for common signature utilities.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":\"ISignatureUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":"ISignatureUtils"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"}},"version":1},"id":13} \ No newline at end of file diff --git a/out/interfaces/ISlasher.sol/ISlasher.json b/out/interfaces/ISlasher.sol/ISlasher.json new file mode 100644 index 00000000..d77a04a5 --- /dev/null +++ b/out/interfaces/ISlasher.sol/ISlasher.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"canSlash","inputs":[{"name":"toBeSlashed","type":"address","internalType":"address"},{"name":"slashingContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"middlewareTimesIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"contractCanSlashOperatorUntilBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"freezeOperator","inputs":[{"name":"toBeFrozen","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCorrectValueForInsertAfter","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"updateBlock","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMiddlewareTimesIndexServeUntilBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getMiddlewareTimesIndexStalestUpdateBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"isFrozen","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestUpdateBlock","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceContract","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"middlewareTimesLength","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorToMiddlewareTimes","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"arrayIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ISlasher.MiddlewareTimes","components":[{"name":"stalestUpdateBlock","type":"uint32","internalType":"uint32"},{"name":"latestServeUntilBlock","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"operatorWhitelistedContractsLinkedListEntry","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"node","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorWhitelistedContractsLinkedListSize","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"optIntoSlashing","inputs":[{"name":"contractAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordFirstStakeUpdate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLastStakeUpdateAndRevokeSlashingAbility","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordStakeUpdate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"updateBlock","type":"uint32","internalType":"uint32"},{"name":"serveUntilBlock","type":"uint32","internalType":"uint32"},{"name":"insertAfter","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetFrozenStatus","inputs":[{"name":"frozenAddresses","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"event","name":"FrozenStatusReset","inputs":[{"name":"previouslySlashedAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MiddlewareTimesAdded","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stalestUpdateBlock","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"latestServeUntilBlock","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"OperatorFrozen","inputs":[{"name":"slashedOperator","type":"address","indexed":true,"internalType":"address"},{"name":"slashingContract","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OptedIntoSlashing","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingAbilityRevoked","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"contractCanSlashOperatorUntilBlock","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canSlash(address,address)":"d98128c0","canWithdraw(address,uint32,uint256)":"8105e043","contractCanSlashOperatorUntilBlock(address,address)":"6f0c2f74","delegation()":"df5cf723","freezeOperator(address)":"38c8ee64","getCorrectValueForInsertAfter(address,uint32)":"723e59c7","getMiddlewareTimesIndexServeUntilBlock(address,uint32)":"7259a45c","getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)":"1874e5ae","isFrozen(address)":"e5839836","latestUpdateBlock(address,address)":"da16e29b","middlewareTimesLength(address)":"a49db732","operatorToMiddlewareTimes(address,uint256)":"282670fc","operatorWhitelistedContractsLinkedListEntry(address,address)":"855fcc4a","operatorWhitelistedContractsLinkedListSize(address)":"e921d4fa","optIntoSlashing(address)":"f73b7519","recordFirstStakeUpdate(address,uint32)":"175d3205","recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":"0ffabbce","recordStakeUpdate(address,uint32,uint32,uint256)":"c747075b","resetFrozenStatus(address[])":"7cf72bba","strategyManager()":"39b70e38"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previouslySlashedAddress\",\"type\":\"address\"}],\"name\":\"FrozenStatusReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\"}],\"name\":\"MiddlewareTimesAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slashedOperator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"slashingContract\",\"type\":\"address\"}],\"name\":\"OperatorFrozen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"OptedIntoSlashing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"contractCanSlashOperatorUntilBlock\",\"type\":\"uint32\"}],\"name\":\"SlashingAbilityRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toBeSlashed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"slashingContract\",\"type\":\"address\"}],\"name\":\"canSlash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"middlewareTimesIndex\",\"type\":\"uint256\"}],\"name\":\"canWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"}],\"name\":\"contractCanSlashOperatorUntilBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toBeFrozen\",\"type\":\"address\"}],\"name\":\"freezeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"updateBlock\",\"type\":\"uint32\"}],\"name\":\"getCorrectValueForInsertAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getMiddlewareTimesIndexServeUntilBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"getMiddlewareTimesIndexStalestUpdateBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isFrozen\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"}],\"name\":\"latestUpdateBlock\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"middlewareTimesLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"arrayIndex\",\"type\":\"uint256\"}],\"name\":\"operatorToMiddlewareTimes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"stalestUpdateBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"latestServeUntilBlock\",\"type\":\"uint32\"}],\"internalType\":\"struct ISlasher.MiddlewareTimes\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"node\",\"type\":\"address\"}],\"name\":\"operatorWhitelistedContractsLinkedListEntry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorWhitelistedContractsLinkedListSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"optIntoSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"}],\"name\":\"recordFirstStakeUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"}],\"name\":\"recordLastStakeUpdateAndRevokeSlashingAbility\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"updateBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"serveUntilBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"insertAfter\",\"type\":\"uint256\"}],\"name\":\"recordStakeUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"frozenAddresses\",\"type\":\"address[]\"}],\"name\":\"resetFrozenStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"OperatorFrozen(address,address)\":{\"details\":\"The `slashingContract` must have permission to slash the `slashedOperator`, i.e. `canSlash(slasherOperator, slashingContract)` must return 'true'.\"}},\"kind\":\"dev\",\"methods\":{\"canWithdraw(address,uint32,uint256)\":{\"details\":\"The correct `middlewareTimesIndex` input should be computable off-chain.\",\"params\":{\"middlewareTimesIndex\":\"Indicates an index in `operatorToMiddlewareTimes[operator]` to consult as proof of the `operator`'s ability to withdraw\",\"operator\":\"Either the operator who queued the withdrawal themselves, or if the withdrawing party is a staker who delegated to an operator, this address is the operator *who the staker was delegated to* at the time of the `withdrawalStartBlock`.\",\"withdrawalStartBlock\":\"The block number at which the withdrawal was initiated.\"}},\"freezeOperator(address)\":{\"details\":\"Technically the operator is 'frozen' (hence the name of this function), and then subject to slashing pending a decision by a human-in-the-loop.The operator must have previously given the caller (which should be a contract) the ability to slash them, through a call to `optIntoSlashing`.\",\"params\":{\"toBeFrozen\":\"The operator to be frozen.\"}},\"isFrozen(address)\":{\"params\":{\"staker\":\"The staker of interest.\"},\"returns\":{\"_0\":\"Returns 'true' if `staker` themselves has their status set to frozen, OR if the staker is delegated to an operator who has their status set to frozen. Otherwise returns 'false'.\"}},\"optIntoSlashing(address)\":{\"details\":\"Typically, this function must be called prior to registering for a middleware.\"},\"recordFirstStakeUpdate(address,uint32)\":{\"details\":\"adds the middleware's slashing contract to the operator's linked list\",\"params\":{\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at the current block is slashable\"}},\"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)\":{\"details\":\"removes the middleware's slashing contract to the operator's linked list and revokes the middleware's (i.e. caller's) ability to slash `operator` once `serveUntil` is reached\",\"params\":{\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at the current block is slashable\"}},\"recordStakeUpdate(address,uint32,uint32,uint256)\":{\"details\":\"insertAfter should be calculated offchain before making the transaction that calls this. this is subject to race conditions, but it is anticipated to be rare and not detrimental.\",\"params\":{\"insertAfter\":\"the element of the operators linked list that the currently updating middleware should be inserted after\",\"operator\":\"the operator whose stake update is being recorded\",\"serveUntilBlock\":\"the block until which the operator's stake at updateBlock is slashable\",\"updateBlock\":\"the block for which the stake update is being recorded\"}},\"resetFrozenStatus(address[])\":{\"details\":\"Callable only by the contract owner (i.e. governance).\"}},\"title\":\"Interface for the primary 'slashing' contract for EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"FrozenStatusReset(address)\":{\"notice\":\"Emitted when `previouslySlashedAddress` is 'unfrozen', allowing them to again move deposited funds within EigenLayer.\"},\"MiddlewareTimesAdded(address,uint256,uint32,uint32)\":{\"notice\":\"Emitted when a middleware times is added to `operator`'s array.\"},\"OperatorFrozen(address,address)\":{\"notice\":\"Emitted when `slashingContract` 'freezes' the `slashedOperator`.\"},\"OptedIntoSlashing(address,address)\":{\"notice\":\"Emitted when `operator` begins to allow `contractAddress` to slash them.\"},\"SlashingAbilityRevoked(address,address,uint32)\":{\"notice\":\"Emitted when `contractAddress` signals that it will no longer be able to slash `operator` after the `contractCanSlashOperatorUntilBlock`.\"}},\"kind\":\"user\",\"methods\":{\"canSlash(address,address)\":{\"notice\":\"Returns true if `slashingContract` is currently allowed to slash `toBeSlashed`.\"},\"canWithdraw(address,uint32,uint256)\":{\"notice\":\"Returns 'true' if `operator` can currently complete a withdrawal started at the `withdrawalStartBlock`, with `middlewareTimesIndex` used to specify the index of a `MiddlewareTimes` struct in the operator's list (i.e. an index in `operatorToMiddlewareTimes[operator]`). The specified struct is consulted as proof of the `operator`'s ability (or lack thereof) to complete the withdrawal. This function will return 'false' if the operator cannot currently complete a withdrawal started at the `withdrawalStartBlock`, *or* in the event that an incorrect `middlewareTimesIndex` is supplied, even if one or more correct inputs exist.\"},\"contractCanSlashOperatorUntilBlock(address,address)\":{\"notice\":\"Returns the block until which `serviceContract` is allowed to slash the `operator`.\"},\"delegation()\":{\"notice\":\"The DelegationManager contract of EigenLayer\"},\"freezeOperator(address)\":{\"notice\":\"Used for 'slashing' a certain operator.\"},\"getCorrectValueForInsertAfter(address,uint32)\":{\"notice\":\"A search routine for finding the correct input value of `insertAfter` to `recordStakeUpdate` / `_updateMiddlewareList`.\"},\"getMiddlewareTimesIndexServeUntilBlock(address,uint32)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator][index].latestServeUntil`.\"},\"getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator][index].stalestUpdateBlock`.\"},\"isFrozen(address)\":{\"notice\":\"Used to determine whether `staker` is actively 'frozen'. If a staker is frozen, then they are potentially subject to slashing of their funds, and cannot cannot deposit or withdraw from the strategyManager until the slashing process is completed and the staker's status is reset (to 'unfrozen').\"},\"latestUpdateBlock(address,address)\":{\"notice\":\"Returns the block at which the `serviceContract` last updated its view of the `operator`'s stake\"},\"middlewareTimesLength(address)\":{\"notice\":\"Getter function for fetching `operatorToMiddlewareTimes[operator].length`\"},\"operatorToMiddlewareTimes(address,uint256)\":{\"notice\":\"operator => [ ( the least recent update block of all of the middlewares it's serving/served, latest time that the stake bonded at that update needed to serve until ) ]\"},\"operatorWhitelistedContractsLinkedListEntry(address,address)\":{\"notice\":\"Getter function for fetching a single node in the operator's linked list (`_operatorToWhitelistedContractsByUpdate[operator]`).\"},\"operatorWhitelistedContractsLinkedListSize(address)\":{\"notice\":\"Getter function for fetching `_operatorToWhitelistedContractsByUpdate[operator].size`.\"},\"optIntoSlashing(address)\":{\"notice\":\"Gives the `contractAddress` permission to slash the funds of the caller.\"},\"recordFirstStakeUpdate(address,uint32)\":{\"notice\":\"this function is a called by middlewares during an operator's registration to make sure the operator's stake at registration is slashable until serveUntil\"},\"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)\":{\"notice\":\"this function is a called by middlewares during an operator's deregistration to make sure the operator's stake at deregistration is slashable until serveUntil\"},\"recordStakeUpdate(address,uint32,uint32,uint256)\":{\"notice\":\"this function is a called by middlewares during a stake update for an operator (perhaps to free pending withdrawals) to make sure the operator's stake at updateBlock is slashable until serveUntil\"},\"resetFrozenStatus(address[])\":{\"notice\":\"Removes the 'frozen' status from each of the `frozenAddresses`\"},\"strategyManager()\":{\"notice\":\"The StrategyManager contract of EigenLayer\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceSee the `Slasher` contract itself for implementation details.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":\"ISlasher\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"previouslySlashedAddress","type":"address","indexed":true}],"type":"event","name":"FrozenStatusReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint32","name":"stalestUpdateBlock","type":"uint32","indexed":false},{"internalType":"uint32","name":"latestServeUntilBlock","type":"uint32","indexed":false}],"type":"event","name":"MiddlewareTimesAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"slashedOperator","type":"address","indexed":true},{"internalType":"address","name":"slashingContract","type":"address","indexed":true}],"type":"event","name":"OperatorFrozen","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true}],"type":"event","name":"OptedIntoSlashing","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint32","name":"contractCanSlashOperatorUntilBlock","type":"uint32","indexed":false}],"type":"event","name":"SlashingAbilityRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"toBeSlashed","type":"address"},{"internalType":"address","name":"slashingContract","type":"address"}],"stateMutability":"view","type":"function","name":"canSlash","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"uint256","name":"middlewareTimesIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"canWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"serviceContract","type":"address"}],"stateMutability":"view","type":"function","name":"contractCanSlashOperatorUntilBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"toBeFrozen","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"freezeOperator"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"updateBlock","type":"uint32"}],"stateMutability":"view","type":"function","name":"getCorrectValueForInsertAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function","name":"getMiddlewareTimesIndexServeUntilBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"view","type":"function","name":"getMiddlewareTimesIndexStalestUpdateBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"isFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"serviceContract","type":"address"}],"stateMutability":"view","type":"function","name":"latestUpdateBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"middlewareTimesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"arrayIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorToMiddlewareTimes","outputs":[{"internalType":"struct ISlasher.MiddlewareTimes","name":"","type":"tuple","components":[{"internalType":"uint32","name":"stalestUpdateBlock","type":"uint32"},{"internalType":"uint32","name":"latestServeUntilBlock","type":"uint32"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"node","type":"address"}],"stateMutability":"view","type":"function","name":"operatorWhitelistedContractsLinkedListEntry","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"operatorWhitelistedContractsLinkedListSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"optIntoSlashing"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"recordFirstStakeUpdate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"recordLastStakeUpdateAndRevokeSlashingAbility"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint32","name":"updateBlock","type":"uint32"},{"internalType":"uint32","name":"serveUntilBlock","type":"uint32"},{"internalType":"uint256","name":"insertAfter","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"recordStakeUpdate"},{"inputs":[{"internalType":"address[]","name":"frozenAddresses","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"resetFrozenStatus"},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"canWithdraw(address,uint32,uint256)":{"details":"The correct `middlewareTimesIndex` input should be computable off-chain.","params":{"middlewareTimesIndex":"Indicates an index in `operatorToMiddlewareTimes[operator]` to consult as proof of the `operator`'s ability to withdraw","operator":"Either the operator who queued the withdrawal themselves, or if the withdrawing party is a staker who delegated to an operator, this address is the operator *who the staker was delegated to* at the time of the `withdrawalStartBlock`.","withdrawalStartBlock":"The block number at which the withdrawal was initiated."}},"freezeOperator(address)":{"details":"Technically the operator is 'frozen' (hence the name of this function), and then subject to slashing pending a decision by a human-in-the-loop.The operator must have previously given the caller (which should be a contract) the ability to slash them, through a call to `optIntoSlashing`.","params":{"toBeFrozen":"The operator to be frozen."}},"isFrozen(address)":{"params":{"staker":"The staker of interest."},"returns":{"_0":"Returns 'true' if `staker` themselves has their status set to frozen, OR if the staker is delegated to an operator who has their status set to frozen. Otherwise returns 'false'."}},"optIntoSlashing(address)":{"details":"Typically, this function must be called prior to registering for a middleware."},"recordFirstStakeUpdate(address,uint32)":{"details":"adds the middleware's slashing contract to the operator's linked list","params":{"operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at the current block is slashable"}},"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":{"details":"removes the middleware's slashing contract to the operator's linked list and revokes the middleware's (i.e. caller's) ability to slash `operator` once `serveUntil` is reached","params":{"operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at the current block is slashable"}},"recordStakeUpdate(address,uint32,uint32,uint256)":{"details":"insertAfter should be calculated offchain before making the transaction that calls this. this is subject to race conditions, but it is anticipated to be rare and not detrimental.","params":{"insertAfter":"the element of the operators linked list that the currently updating middleware should be inserted after","operator":"the operator whose stake update is being recorded","serveUntilBlock":"the block until which the operator's stake at updateBlock is slashable","updateBlock":"the block for which the stake update is being recorded"}},"resetFrozenStatus(address[])":{"details":"Callable only by the contract owner (i.e. governance)."}},"version":1},"userdoc":{"kind":"user","methods":{"canSlash(address,address)":{"notice":"Returns true if `slashingContract` is currently allowed to slash `toBeSlashed`."},"canWithdraw(address,uint32,uint256)":{"notice":"Returns 'true' if `operator` can currently complete a withdrawal started at the `withdrawalStartBlock`, with `middlewareTimesIndex` used to specify the index of a `MiddlewareTimes` struct in the operator's list (i.e. an index in `operatorToMiddlewareTimes[operator]`). The specified struct is consulted as proof of the `operator`'s ability (or lack thereof) to complete the withdrawal. This function will return 'false' if the operator cannot currently complete a withdrawal started at the `withdrawalStartBlock`, *or* in the event that an incorrect `middlewareTimesIndex` is supplied, even if one or more correct inputs exist."},"contractCanSlashOperatorUntilBlock(address,address)":{"notice":"Returns the block until which `serviceContract` is allowed to slash the `operator`."},"delegation()":{"notice":"The DelegationManager contract of EigenLayer"},"freezeOperator(address)":{"notice":"Used for 'slashing' a certain operator."},"getCorrectValueForInsertAfter(address,uint32)":{"notice":"A search routine for finding the correct input value of `insertAfter` to `recordStakeUpdate` / `_updateMiddlewareList`."},"getMiddlewareTimesIndexServeUntilBlock(address,uint32)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator][index].latestServeUntil`."},"getMiddlewareTimesIndexStalestUpdateBlock(address,uint32)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator][index].stalestUpdateBlock`."},"isFrozen(address)":{"notice":"Used to determine whether `staker` is actively 'frozen'. If a staker is frozen, then they are potentially subject to slashing of their funds, and cannot cannot deposit or withdraw from the strategyManager until the slashing process is completed and the staker's status is reset (to 'unfrozen')."},"latestUpdateBlock(address,address)":{"notice":"Returns the block at which the `serviceContract` last updated its view of the `operator`'s stake"},"middlewareTimesLength(address)":{"notice":"Getter function for fetching `operatorToMiddlewareTimes[operator].length`"},"operatorToMiddlewareTimes(address,uint256)":{"notice":"operator => [ ( the least recent update block of all of the middlewares it's serving/served, latest time that the stake bonded at that update needed to serve until ) ]"},"operatorWhitelistedContractsLinkedListEntry(address,address)":{"notice":"Getter function for fetching a single node in the operator's linked list (`_operatorToWhitelistedContractsByUpdate[operator]`)."},"operatorWhitelistedContractsLinkedListSize(address)":{"notice":"Getter function for fetching `_operatorToWhitelistedContractsByUpdate[operator].size`."},"optIntoSlashing(address)":{"notice":"Gives the `contractAddress` permission to slash the funds of the caller."},"recordFirstStakeUpdate(address,uint32)":{"notice":"this function is a called by middlewares during an operator's registration to make sure the operator's stake at registration is slashable until serveUntil"},"recordLastStakeUpdateAndRevokeSlashingAbility(address,uint32)":{"notice":"this function is a called by middlewares during an operator's deregistration to make sure the operator's stake at deregistration is slashable until serveUntil"},"recordStakeUpdate(address,uint32,uint32,uint256)":{"notice":"this function is a called by middlewares during a stake update for an operator (perhaps to free pending withdrawals) to make sure the operator's stake at updateBlock is slashable until serveUntil"},"resetFrozenStatus(address[])":{"notice":"Removes the 'frozen' status from each of the `frozenAddresses`"},"strategyManager()":{"notice":"The StrategyManager contract of EigenLayer"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":"ISlasher"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/out/interfaces/IStrategy.sol/IStrategy.json b/out/interfaces/IStrategy.sol/IStrategy.json new file mode 100644 index 00000000..1b2f978e --- /dev/null +++ b/out/interfaces/IStrategy.sol/IStrategy.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"deposit","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"explanation","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"shares","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sharesToUnderlying","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"sharesToUnderlyingView","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToShares","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"underlyingToSharesView","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"userUnderlying","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"userUnderlyingView","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deposit(address,uint256)":"47e7ef24","explanation()":"ab5921e1","shares(address)":"ce7c2ac2","sharesToUnderlying(uint256)":"f3e73875","sharesToUnderlyingView(uint256)":"7a8b2637","totalShares()":"3a98ef39","underlyingToShares(uint256)":"8c871019","underlyingToSharesView(uint256)":"e3dae51c","underlyingToken()":"2495a599","userUnderlying(address)":"8f6a6240","userUnderlyingView(address)":"553ca5f8","withdraw(address,address,uint256)":"d9caed12"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"explanation\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"shares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToSharesView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.\",\"params\":{\"amount\":\"is the amount of token being deposited\",\"token\":\"is the ERC20 token being deposited\"},\"returns\":{\"_0\":\"newShares is the number of new shares issued at the current exchange ratio.\"}},\"sharesToUnderlying(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"sharesToUnderlyingView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"underlyingToShares(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"underlyingToSharesView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"withdraw(address,address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.\",\"params\":{\"amountShares\":\"is the amount of shares being withdrawn\",\"recipient\":\"is the address to receive the withdrawn funds\",\"token\":\"is the ERC20 token being transferred out\"}}},\"title\":\"Minimal interface for an `Strategy` contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(address,uint256)\":{\"notice\":\"Used to deposit tokens into this Strategy\"},\"explanation()\":{\"notice\":\"Returns either a brief string explaining the strategy's goal & purpose, or a link to metadata that explains in more detail.\"},\"shares(address)\":{\"notice\":\"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract\"},\"sharesToUnderlying(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications\"},\"sharesToUnderlyingView(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications\"},\"totalShares()\":{\"notice\":\"The total number of extant shares in this Strategy\"},\"underlyingToShares(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications\"},\"underlyingToSharesView(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications\"},\"underlyingToken()\":{\"notice\":\"The underlying token for shares in this Strategy\"},\"userUnderlying(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications\"},\"userUnderlyingView(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to withdraw tokens from this Strategy, to the `recipient`'s address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceCustom `Strategy` implementations may expand extensively on this interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":\"IStrategy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"explanation","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sharesToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"underlyingToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"view","type":"function","name":"underlyingToSharesView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"underlyingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"userUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"userUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"deposit(address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.","params":{"amount":"is the amount of token being deposited","token":"is the ERC20 token being deposited"},"returns":{"_0":"newShares is the number of new shares issued at the current exchange ratio."}},"sharesToUnderlying(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"sharesToUnderlyingView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"underlyingToShares(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"underlyingToSharesView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"withdraw(address,address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.","params":{"amountShares":"is the amount of shares being withdrawn","recipient":"is the address to receive the withdrawn funds","token":"is the ERC20 token being transferred out"}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(address,uint256)":{"notice":"Used to deposit tokens into this Strategy"},"explanation()":{"notice":"Returns either a brief string explaining the strategy's goal & purpose, or a link to metadata that explains in more detail."},"shares(address)":{"notice":"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract"},"sharesToUnderlying(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications"},"sharesToUnderlyingView(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications"},"totalShares()":{"notice":"The total number of extant shares in this Strategy"},"underlyingToShares(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications"},"underlyingToSharesView(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications"},"underlyingToken()":{"notice":"The underlying token for shares in this Strategy"},"userUnderlying(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications"},"userUnderlyingView(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications"},"withdraw(address,address,uint256)":{"notice":"Used to withdraw tokens from this Strategy, to the `recipient`'s address"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":"IStrategy"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"}},"version":1},"id":15} \ No newline at end of file diff --git a/out/interfaces/IStrategyManager.sol/IStrategyManager.json b/out/interfaces/IStrategyManager.sol/IStrategyManager.json new file mode 100644 index 00000000..a6e04d04 --- /dev/null +++ b/out/interfaces/IStrategyManager.sol/IStrategyManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStrategiesToDepositWhitelist","inputs":[{"name":"strategiesToWhitelist","type":"address[]","internalType":"contract IStrategy[]"},{"name":"thirdPartyTransfersForbiddenValues","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"calculateWithdrawalRoot","inputs":[{"name":"queuedWithdrawal","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"depositIntoStrategy","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"depositIntoStrategyWithSignature","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"staker","type":"address","internalType":"address"},{"name":"expiry","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"getDeposits","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"contract IStrategy[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"migrateQueuedWithdrawal","inputs":[{"name":"queuedWithdrawal","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","components":[{"name":"strategies","type":"address[]","internalType":"contract IStrategy[]"},{"name":"shares","type":"uint256[]","internalType":"uint256[]"},{"name":"staker","type":"address","internalType":"address"},{"name":"withdrawerAndNonce","type":"tuple","internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","components":[{"name":"withdrawer","type":"address","internalType":"address"},{"name":"nonce","type":"uint96","internalType":"uint96"}]},{"name":"withdrawalStartBlock","type":"uint32","internalType":"uint32"},{"name":"delegatedAddress","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeStrategiesFromDepositWhitelist","inputs":[{"name":"strategiesToRemoveFromWhitelist","type":"address[]","internalType":"contract IStrategy[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slasher","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISlasher"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyListLength","inputs":[{"name":"staker","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakerStrategyShares","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"shares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyWhitelister","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"thirdPartyTransfersForbidden","inputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdrawSharesAsTokens","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Deposit","inputs":[{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"contract IERC20"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StrategyAddedToDepositWhitelist","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyRemovedFromDepositWhitelist","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyWhitelisterChanged","inputs":[{"name":"previousAddress","type":"address","indexed":false,"internalType":"address"},{"name":"newAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UpdatedThirdPartyTransfersForbidden","inputs":[{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"value","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addShares(address,address,address,uint256)":"c4623ea1","addStrategiesToDepositWhitelist(address[],bool[])":"df5b3547","calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address))":"b43b514b","delegation()":"df5cf723","depositIntoStrategy(address,address,uint256)":"e7a050aa","depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":"32e89ace","eigenPodManager()":"4665bcda","getDeposits(address)":"94f649dd","migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address))":"cd293f6f","removeShares(address,address,uint256)":"8c80d4e5","removeStrategiesFromDepositWhitelist(address[])":"b5d8b5b8","slasher()":"b1344271","stakerStrategyListLength(address)":"8b8aac3c","stakerStrategyShares(address,address)":"7a7e0d92","strategyWhitelister()":"967fc0d2","thirdPartyTransfersForbidden(address)":"9b4da03d","withdrawSharesAsTokens(address,address,uint256,address)":"c608c7f3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAddedToDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemovedFromDepositWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"StrategyWhitelisterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"UpdatedThirdPartyTransfersForbidden\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"addShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\"}],\"name\":\"addStrategiesToDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"name\":\"queuedWithdrawal\",\"type\":\"tuple\"}],\"name\":\"calculateWithdrawalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositIntoStrategy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"depositIntoStrategyWithSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eigenPodManager\",\"outputs\":[{\"internalType\":\"contract IEigenPodManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDeposits\",\"outputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategies\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"shares\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"delegatedAddress\",\"type\":\"address\"}],\"internalType\":\"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"name\":\"queuedWithdrawal\",\"type\":\"tuple\"}],\"name\":\"migrateQueuedWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"removeShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy[]\",\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\"}],\"name\":\"removeStrategiesFromDepositWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slasher\",\"outputs\":[{\"internalType\":\"contract ISlasher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerStrategyListLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"stakerStrategyShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyWhitelister\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"thirdPartyTransfersForbidden\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawSharesAsTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"events\":{\"Deposit(address,address,address,uint256)\":{\"params\":{\"shares\":\"Is the number of new shares `staker` has been granted in `strategy`.\",\"staker\":\"Is the staker who is depositing funds into EigenLayer.\",\"strategy\":\"Is the strategy that `staker` has deposited into.\",\"token\":\"Is the token that `staker` deposited.\"}}},\"kind\":\"dev\",\"methods\":{\"addStrategiesToDepositWhitelist(address[],bool[])\":{\"params\":{\"strategiesToWhitelist\":\"Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)\",\"thirdPartyTransfersForbiddenValues\":\"bool values to set `thirdPartyTransfersForbidden` to for each strategy\"}},\"depositIntoStrategy(address,address,uint256)\":{\"details\":\"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.Cannot be called by an address that is 'frozen' (this function will revert if the `msg.sender` is frozen). WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy.\",\"params\":{\"amount\":\"is the amount of token to be deposited in the strategy by the staker\",\"strategy\":\"is the specified strategy where deposit is to be made,\",\"token\":\"is the denomination in which the deposit is to be made,\"},\"returns\":{\"shares\":\"The amount of new shares in the `strategy` created as part of the action.\"}},\"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)\":{\"details\":\"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.A signature is required for this function to eliminate the possibility of griefing attacks, specifically those targeting stakers who may be attempting to undelegate.Cannot be called if thirdPartyTransfersForbidden is set to true for this strategy WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy\",\"params\":{\"amount\":\"is the amount of token to be deposited in the strategy by the staker\",\"expiry\":\"the timestamp at which the signature expires\",\"signature\":\"is a valid signature from the `staker`. either an ECDSA signature if the `staker` is an EOA, or data to forward following EIP-1271 if the `staker` is a contract\",\"staker\":\"the staker that the deposited assets will be credited to\",\"strategy\":\"is the specified strategy where deposit is to be made,\",\"token\":\"is the denomination in which the deposit is to be made,\"},\"returns\":{\"shares\":\"The amount of new shares in the `strategy` created as part of the action.\"}},\"getDeposits(address)\":{\"returns\":{\"_0\":\"(staker's strategies, shares in these strategies)\"}},\"removeStrategiesFromDepositWhitelist(address[])\":{\"params\":{\"strategiesToRemoveFromWhitelist\":\"Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)\"}}},\"title\":\"Interface for the primary entrypoint for funds into EigenLayer.\",\"version\":1},\"userdoc\":{\"events\":{\"Deposit(address,address,address,uint256)\":{\"notice\":\"Emitted when a new deposit occurs on behalf of `staker`.\"},\"StrategyAddedToDepositWhitelist(address)\":{\"notice\":\"Emitted when a strategy is added to the approved list of strategies for deposit\"},\"StrategyRemovedFromDepositWhitelist(address)\":{\"notice\":\"Emitted when a strategy is removed from the approved list of strategies for deposit\"},\"StrategyWhitelisterChanged(address,address)\":{\"notice\":\"Emitted when the `strategyWhitelister` is changed\"},\"UpdatedThirdPartyTransfersForbidden(address,bool)\":{\"notice\":\"Emitted when `thirdPartyTransfersForbidden` is updated for a strategy and value by the owner\"}},\"kind\":\"user\",\"methods\":{\"addShares(address,address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue\"},\"addStrategiesToDepositWhitelist(address[],bool[])\":{\"notice\":\"Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into\"},\"delegation()\":{\"notice\":\"Returns the single, central Delegation contract of EigenLayer\"},\"depositIntoStrategy(address,address,uint256)\":{\"notice\":\"Deposits `amount` of `token` into the specified `strategy`, with the resultant shares credited to `msg.sender`\"},\"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)\":{\"notice\":\"Used for depositing an asset into the specified strategy with the resultant shares credited to `staker`, who must sign off on the action. Note that the assets are transferred out/from the `msg.sender`, not from the `staker`; this function is explicitly designed purely to help one address deposit 'for' another.\"},\"eigenPodManager()\":{\"notice\":\"Returns the EigenPodManager contract of EigenLayer\"},\"getDeposits(address)\":{\"notice\":\"Get all details on the staker's deposits and corresponding shares\"},\"removeShares(address,address,uint256)\":{\"notice\":\"Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue\"},\"removeStrategiesFromDepositWhitelist(address[])\":{\"notice\":\"Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into\"},\"slasher()\":{\"notice\":\"Returns the single, central Slasher contract of EigenLayer\"},\"stakerStrategyListLength(address)\":{\"notice\":\"Simple getter function that returns `stakerStrategyList[staker].length`.\"},\"stakerStrategyShares(address,address)\":{\"notice\":\"Returns the current shares of `user` in `strategy`\"},\"strategyWhitelister()\":{\"notice\":\"Returns the address of the `strategyWhitelister`\"},\"thirdPartyTransfersForbidden(address)\":{\"notice\":\"Returns bool for whether or not `strategy` enables credit transfers. i.e enabling depositIntoStrategyWithSignature calls or queueing withdrawals to a different address than the staker.\"},\"withdrawSharesAsTokens(address,address,uint256,address)\":{\"notice\":\"Used by the DelegationManager to convert withdrawn shares to tokens and send them to a recipient\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceSee the `StrategyManager` contract itself for implementation details.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":\"IStrategyManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e\",\"dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234\",\"dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"staker","type":"address","indexed":false},{"internalType":"contract IERC20","name":"token","type":"address","indexed":false},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyAddedToDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyRemovedFromDepositWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"previousAddress","type":"address","indexed":false},{"internalType":"address","name":"newAddress","type":"address","indexed":false}],"type":"event","name":"StrategyWhitelisterChanged","anonymous":false},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"bool","name":"value","type":"bool","indexed":false}],"type":"event","name":"UpdatedThirdPartyTransfersForbidden","anonymous":false},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addShares"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategiesToWhitelist","type":"address[]"},{"internalType":"bool[]","name":"thirdPartyTransfersForbiddenValues","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"addStrategiesToDepositWhitelist"},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","name":"queuedWithdrawal","type":"tuple","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"pure","type":"function","name":"calculateWithdrawalRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositIntoStrategy","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"depositIntoStrategyWithSignature","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eigenPodManager","outputs":[{"internalType":"contract IEigenPodManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposits","outputs":[{"internalType":"contract IStrategy[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal","name":"queuedWithdrawal","type":"tuple","components":[{"internalType":"contract IStrategy[]","name":"strategies","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address","name":"staker","type":"address"},{"internalType":"struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce","name":"withdrawerAndNonce","type":"tuple","components":[{"internalType":"address","name":"withdrawer","type":"address"},{"internalType":"uint96","name":"nonce","type":"uint96"}]},{"internalType":"uint32","name":"withdrawalStartBlock","type":"uint32"},{"internalType":"address","name":"delegatedAddress","type":"address"}]}],"stateMutability":"nonpayable","type":"function","name":"migrateQueuedWithdrawal","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"removeShares"},{"inputs":[{"internalType":"contract IStrategy[]","name":"strategiesToRemoveFromWhitelist","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategiesFromDepositWhitelist"},{"inputs":[],"stateMutability":"view","type":"function","name":"slasher","outputs":[{"internalType":"contract ISlasher","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"stateMutability":"view","type":"function","name":"stakerStrategyListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"}],"stateMutability":"view","type":"function","name":"stakerStrategyShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyWhitelister","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"}],"stateMutability":"view","type":"function","name":"thirdPartyTransfersForbidden","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawSharesAsTokens"}],"devdoc":{"kind":"dev","methods":{"addStrategiesToDepositWhitelist(address[],bool[])":{"params":{"strategiesToWhitelist":"Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)","thirdPartyTransfersForbiddenValues":"bool values to set `thirdPartyTransfersForbidden` to for each strategy"}},"depositIntoStrategy(address,address,uint256)":{"details":"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.Cannot be called by an address that is 'frozen' (this function will revert if the `msg.sender` is frozen). WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy.","params":{"amount":"is the amount of token to be deposited in the strategy by the staker","strategy":"is the specified strategy where deposit is to be made,","token":"is the denomination in which the deposit is to be made,"},"returns":{"shares":"The amount of new shares in the `strategy` created as part of the action."}},"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":{"details":"The `msg.sender` must have previously approved this contract to transfer at least `amount` of `token` on their behalf.A signature is required for this function to eliminate the possibility of griefing attacks, specifically those targeting stakers who may be attempting to undelegate.Cannot be called if thirdPartyTransfersForbidden is set to true for this strategy WARNING: Depositing tokens that allow reentrancy (eg. ERC-777) into a strategy is not recommended. This can lead to attack vectors where the token balance and corresponding strategy shares are not in sync upon reentrancy","params":{"amount":"is the amount of token to be deposited in the strategy by the staker","expiry":"the timestamp at which the signature expires","signature":"is a valid signature from the `staker`. either an ECDSA signature if the `staker` is an EOA, or data to forward following EIP-1271 if the `staker` is a contract","staker":"the staker that the deposited assets will be credited to","strategy":"is the specified strategy where deposit is to be made,","token":"is the denomination in which the deposit is to be made,"},"returns":{"shares":"The amount of new shares in the `strategy` created as part of the action."}},"getDeposits(address)":{"returns":{"_0":"(staker's strategies, shares in these strategies)"}},"removeStrategiesFromDepositWhitelist(address[])":{"params":{"strategiesToRemoveFromWhitelist":"Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addShares(address,address,address,uint256)":{"notice":"Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue"},"addStrategiesToDepositWhitelist(address[],bool[])":{"notice":"Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into"},"delegation()":{"notice":"Returns the single, central Delegation contract of EigenLayer"},"depositIntoStrategy(address,address,uint256)":{"notice":"Deposits `amount` of `token` into the specified `strategy`, with the resultant shares credited to `msg.sender`"},"depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)":{"notice":"Used for depositing an asset into the specified strategy with the resultant shares credited to `staker`, who must sign off on the action. Note that the assets are transferred out/from the `msg.sender`, not from the `staker`; this function is explicitly designed purely to help one address deposit 'for' another."},"eigenPodManager()":{"notice":"Returns the EigenPodManager contract of EigenLayer"},"getDeposits(address)":{"notice":"Get all details on the staker's deposits and corresponding shares"},"removeShares(address,address,uint256)":{"notice":"Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue"},"removeStrategiesFromDepositWhitelist(address[])":{"notice":"Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into"},"slasher()":{"notice":"Returns the single, central Slasher contract of EigenLayer"},"stakerStrategyListLength(address)":{"notice":"Simple getter function that returns `stakerStrategyList[staker].length`."},"stakerStrategyShares(address,address)":{"notice":"Returns the current shares of `user` in `strategy`"},"strategyWhitelister()":{"notice":"Returns the address of the `strategyWhitelister`"},"thirdPartyTransfersForbidden(address)":{"notice":"Returns bool for whether or not `strategy` enables credit transfers. i.e enabling depositIntoStrategyWithSignature calls or queueing withdrawals to a different address than the staker."},"withdrawSharesAsTokens(address,address,uint256,address)":{"notice":"Used by the DelegationManager to convert withdrawn shares to tokens and send them to a recipient"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":"IStrategyManager"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x6808a4feea1bde54f60f9816251f8552d05f0340d87e9a57523ffacdecdb7dfb","urls":["bzz-raw://24dd16f797a63f918428e52b22a821deda75cae1a6728c003375e3ad15fcb22e","dweb:/ipfs/QmNidYeCGhstsjnZm4Mb6LMmRSNbRAx21nUCng1SMbuBqt"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xc40998ca52abf38829f8ee99a28c5eed741361194d8774e84783c75a74902674","urls":["bzz-raw://2d03e87c279200f81ec9031ca1dc839e65829952e375748de0ed95a3d6861234","dweb:/ipfs/QmQEhmNMQXxqmjFJdgrDceEYqwJQ4AWJR5TxgDy1ZMSrqN"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file diff --git a/out/libraries/BeaconChainProofs.sol/BeaconChainProofs.json b/out/libraries/BeaconChainProofs.sol/BeaconChainProofs.json new file mode 100644 index 00000000..8a96f501 --- /dev/null +++ b/out/libraries/BeaconChainProofs.sol/BeaconChainProofs.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d5e00127fcc34d951bca6e713c67fbd9356d5179c727517adfa61cab58afc4e64736f6c634300080c0033","sourceMap":"532:17199:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;532:17199:17;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d5e00127fcc34d951bca6e713c67fbd9356d5179c727517adfa61cab58afc4e64736f6c634300080c0033","sourceMap":"532:17199:17:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":\"BeaconChainProofs\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":"BeaconChainProofs"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/out/libraries/Endian.sol/Endian.json b/out/libraries/Endian.sol/Endian.json new file mode 100644 index 00000000..2439bda6 --- /dev/null +++ b/out/libraries/Endian.sol/Endian.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204679b2a0840a3c7c8f0b63a513b5abce8d4ce838bb5ca5e1383b759358b9439264736f6c634300080c0033","sourceMap":"62:1028:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;62:1028:18;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204679b2a0840a3c7c8f0b63a513b5abce8d4ce838bb5ca5e1383b759358b9439264736f6c634300080c0033","sourceMap":"62:1028:18:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":\"Endian\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":"Endian"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"}},"version":1},"id":18} \ No newline at end of file diff --git a/out/libraries/Merkle.sol/Merkle.json b/out/libraries/Merkle.sol/Merkle.json new file mode 100644 index 00000000..45fe113c --- /dev/null +++ b/out/libraries/Merkle.sol/Merkle.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207deec188c6189269fe8b29cdc11c44ad95d1c7622030e22484802337777ed5ae64736f6c634300080c0033","sourceMap":"815:6377:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;815:6377:19;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207deec188c6189269fe8b29cdc11c44ad95d1c7622030e22484802337777ed5ae64736f6c634300080c0033","sourceMap":"815:6377:19:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"These functions deal with verification of Merkle Tree proofs. The tree and the proofs can be generated using our https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. You will find a quickstart guide in the readme. WARNING: You should avoid using leaf values that are 64 bytes long prior to hashing, or use a hash function other than keccak256 for hashing leaves. This is because the concatenation of a sorted pair of internal nodes in the merkle tree could be reinterpreted as a leaf value. OpenZeppelin's JavaScript library generates merkle trees that are safe against this attack out of the box.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":\"Merkle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916\",\"dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":"Merkle"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x606eabfdc2241dab76f7c6e6754324ae9eb12b0a5068984d2c11e2cd2fa94d98","urls":["bzz-raw://a69c88393e9cf58ab066b75c75134b8c7cd51c242b726767cd8ec7e7d8351916","dweb:/ipfs/QmaNMz951WD5JZeQs5yav29mZn2E6fvdFm5u3moMupRzSM"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/out/test.sol/DSTest.json b/out/test.sol/DSTest.json new file mode 100644 index 00000000..d52e68ef --- /dev/null +++ b/out/test.sol/DSTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"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_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_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b506102598061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561018a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610112917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101ca565b60408051601f198184030181529082905261012c916101ee565b6000604051808303816000865af19150503d8060008114610169576040519150601f19603f3d011682016040523d82523d6000602084013e61016e565b606091505b50915050808060200190518101906101869190610201565b9150505b919050565b6000815160005b818110156101b05760208185018101518683015201610196565b818111156101bf576000828601525b509290920192915050565b6001600160e01b03198316815260006101e6600483018461018f565b949350505050565b60006101fa828461018f565b9392505050565b60006020828403121561021357600080fd5b815180151581146101fa57600080fdfea26469706673582212202561740e91f22ef30b3336578dfb5a97eb94b33fa3c3fe4876446c57e59feea964736f6c634300080c0033","sourceMap":"715:19781:20:-:0;;;1572:26;;;-1:-1:-1;;1572:26:20;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561018a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610112917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101ca565b60408051601f198184030181529082905261012c916101ee565b6000604051808303816000865af19150503d8060008114610169576040519150601f19603f3d011682016040523d82523d6000602084013e61016e565b606091505b50915050808060200190518101906101869190610201565b9150505b919050565b6000815160005b818110156101b05760208185018101518683015201610196565b818111156101bf576000828601525b509290920192915050565b6001600160e01b03198316815260006101e6600483018461018f565b949350505050565b60006101fa828461018f565b9392505050565b60006020828403121561021357600080fd5b815180151581146101fa57600080fdfea26469706673582212202561740e91f22ef30b3336578dfb5a97eb94b33fa3c3fe4876446c57e59feea964736f6c634300080c0033","sourceMap":"715:19781:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:120;;172:22;154:41;;142:2;127:18;1819:584:20;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:20;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:51:120;;;-1:-1:-1;;;447:18:120;;;440:34;2196:43:20;;;;;;;;;353:18:120;;;2196:43:20;;;-1:-1:-1;;1671:64:20;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:20;;;;;;;;;;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:20:o;485:336:120:-;526:3;564:5;558:12;588:1;598:128;612:6;609:1;606:13;598:128;;;709:4;694:13;;;690:24;;684:31;671:11;;;664:52;627:12;598:128;;;744:6;741:1;738:13;735:48;;;779:1;770:6;765:3;761:16;754:27;735:48;-1:-1:-1;799:16:120;;;;;485:336;-1:-1:-1;;485:336:120:o;826:278::-;-1:-1:-1;;;;;;1011:33:120;;999:46;;981:3;1061:37;1095:1;1086:11;;1078:6;1061:37;:::i;:::-;1054:44;826:278;-1:-1:-1;;;;826:278:120:o;1109:189::-;1238:3;1263:29;1288:3;1280:6;1263:29;:::i;:::-;1256:36;1109:189;-1:-1:-1;;;1109:189:120:o;1303:277::-;1370:6;1423:2;1411:9;1402:7;1398:23;1394:32;1391:52;;;1439:1;1436;1429:12;1391:52;1471:9;1465:16;1524:5;1517:13;1510:21;1503:5;1500:32;1490:60;;1546:1;1543;1536:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\":\"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\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/lib/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"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":"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":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/lib/ds-test/src/test.sol":"DSTest"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":20} \ No newline at end of file diff --git a/out/test.sol/Test.json b/out/test.sol/Test.json new file mode 100644 index 00000000..8c69d3ea --- /dev/null +++ b/out/test.sol/Test.json @@ -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":"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":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5\",\"dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2\",\"dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"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":"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[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Test.sol":"Test"},"evmVersion":"london","libraries":{}},"sources":{"lib/forge-std/lib/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xb58d624eb0922d4ab14856efb0ab558b0727ccfc28448c5779f1ab4d98cf3daf","urls":["bzz-raw://1869fc58cb27a7b680428b79d0e0b6f45bd3c61fedb4b3f895e143fb899519d5","dweb:/ipfs/QmcjECGVpQPjhL2bokDyQeGWdzM99qPFMhq5r7KqKLot7R"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0xb5d4816a3f37977b1efa07b5e715daa917e96fd28dec1805c4189653db4ea33a","urls":["bzz-raw://34338fa7f079f8d64f20d976f9bf908a710c8728f18c4b361b020b24fedfedf2","dweb:/ipfs/QmYhwY1wi6vVLMUsJ32L3GiSR9HRaFhGL1Y3wRDjy41KXn"],"license":"MIT"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":32} \ No newline at end of file diff --git a/out/utils/Context.sol/Context.json b/out/utils/Context.sol/Context.json new file mode 100644 index 00000000..e5e07ae4 --- /dev/null +++ b/out/utils/Context.sol/Context.json @@ -0,0 +1 @@ +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":utils/=lib/utils/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","@uniswap/v3-core/=lib/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","solmate/=lib/solmate/src/","utils/=lib/utils/","v3-core/=lib/v3-core/contracts/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file diff --git a/src/examples/MetaCoin.sol b/src/examples/MetaCoin.sol new file mode 100644 index 00000000..e2bccdc2 --- /dev/null +++ b/src/examples/MetaCoin.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +// Tells the Solidity compiler to compile only from v0.8.13 to v0.9.0 +pragma solidity =0.8.12; + +import {PredicateClient} from "../mixins/PredicateClient.sol"; +import {PredicateMessage} from "../interfaces/IPredicateClient.sol"; + +// This is just a simple example of a coin-like contract. +// It is not ERC20 compatible and cannot be expected to talk to other +// coin/token contracts. + +contract MetaCoin is PredicateClient { + mapping(address => uint256) public balances; + + event Transfer(address indexed _from, address indexed _to, uint256 _value); + + constructor(address owner, address serviceManager) { + balances[owner] = 10_000_000_000_000; + setServiceManager(serviceManager); + _transferOwnership(owner); + } + + function sendCoin(address receiver, uint256 amount, PredicateMessage calldata predicateMessage) public { + bytes memory encodedSigAndArgs = abi.encodeWithSignature("_sendCoin(address,uint256)", receiver, amount); + require(_authorizeTransaction(predicateMessage, encodedSigAndArgs), "MetaCoin: unauthorized transaction"); + + // business logic function that is protected + _sendCoin(receiver, amount); + } + + // business logic function that is protected + function _sendCoin(address receiver, uint256 amount) internal { + require(balances[msg.sender] >= amount, "MetaCoin: insufficient balance"); + balances[msg.sender] -= amount; + balances[receiver] += amount; + emit Transfer(msg.sender, receiver, amount); + } + + function getBalance( + address addr + ) public view returns (uint256) { + return balances[addr]; + } +} diff --git a/src/examples/MetaCoinWithRateLimit.sol b/src/examples/MetaCoinWithRateLimit.sol new file mode 100644 index 00000000..c0fea9a8 --- /dev/null +++ b/src/examples/MetaCoinWithRateLimit.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT +pragma solidity =0.8.12; + +import {Ownable} from "openzeppelin/access/Ownable.sol"; +import {RateLimiter} from "../mixins/RateLimiter.sol"; + +contract MetaCoinWithRateLimit is RateLimiter { + mapping(address => uint256) public balances; + string public constant SYMBOL = "META"; + + error InsufficientBalance(address sender, uint256 requested, uint256 available); + + event Transfer(address indexed _from, address indexed _to, uint256 _value); + + constructor() { + balances[msg.sender] = 10_000_000_000_000; + } + + function sendCoin(address receiver, uint256 amount) public { + if (!this.evaluateRateLimit(SYMBOL, amount)) { + revert("MetaCoinWithRateLimit: rate limit exceeded"); + } + _sendCoin(receiver, amount); + } + + function _sendCoin(address receiver, uint256 amount) internal { + if (balances[msg.sender] < amount) { + revert InsufficientBalance(msg.sender, amount, balances[msg.sender]); + } + balances[msg.sender] -= amount; + balances[receiver] += amount; + emit Transfer(msg.sender, receiver, amount); + } + + function getBalance( + address addr + ) public view returns (uint256) { + return balances[addr]; + } +}