@arbitrum/nitro-contracts 2.0.0 → 3.0.0-alpha.0
Sign up to get free protection for your applications and to get access to all the features.
- package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
- package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
- package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
- package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
- package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
- package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
- package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
- package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
- package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
- package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
- package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
- package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
- package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
- package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
- package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
- package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
- package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
- package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
- package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
- package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
- package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
- package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
- package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
- package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
- package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
- package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
- package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
- package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
- package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
- package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
- package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
- package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
- package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
- package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
- package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
- package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
- package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
- package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
- package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
- package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
- package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
- package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
- package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
- package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
- package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
- package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
- package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
- package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
- package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
- package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
- package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
- package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
- package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
- package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
- package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
- package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
- package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
- package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
- package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
- package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
- package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
- package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
- package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
- package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
- package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -494
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
- package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -530
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
- package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
- package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
- package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
- package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
- package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
- package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
- package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
- package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
- package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
- package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
- package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
- package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
- package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
- package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
- package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
- package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
- package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
- package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
- package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
- package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
- package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
- package/out/yul/Reader4844.yul/Reader4844.json +1 -1
- package/package.json +16 -6
- package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
- package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
- package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
- package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
- package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
- package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
- package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
- package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
- package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
- package/src/bridge/AbsBridge.sol +38 -48
- package/src/bridge/AbsInbox.sol +88 -97
- package/src/bridge/AbsOutbox.sol +23 -37
- package/src/bridge/Bridge.sol +6 -4
- package/src/bridge/DelayBuffer.sol +123 -0
- package/src/bridge/DelayBufferTypes.sol +38 -0
- package/src/bridge/ERC20Bridge.sol +8 -4
- package/src/bridge/ERC20Inbox.sol +46 -53
- package/src/bridge/ERC20Outbox.sol +7 -3
- package/src/bridge/GasRefunder.sol +38 -24
- package/src/bridge/IBridge.sol +30 -21
- package/src/bridge/IERC20Bridge.sol +1 -1
- package/src/bridge/IERC20Inbox.sol +4 -2
- package/src/bridge/IEthBridge.sol +4 -2
- package/src/bridge/IInbox.sol +4 -2
- package/src/bridge/IInboxBase.sol +17 -13
- package/src/bridge/IOutbox.sol +13 -8
- package/src/bridge/ISequencerInbox.sol +118 -13
- package/src/bridge/Inbox.sol +131 -151
- package/src/bridge/Messages.sol +48 -18
- package/src/bridge/Outbox.sol +6 -2
- package/src/bridge/SequencerInbox.sol +339 -274
- package/src/chain/CacheManager.sol +49 -18
- package/src/challengeV2/EdgeChallengeManager.sol +783 -0
- package/src/challengeV2/IAssertionChain.sol +39 -0
- package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
- package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
- package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
- package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
- package/src/challengeV2/libraries/Enums.sol +26 -0
- package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
- package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
- package/src/libraries/AddressAliasHelper.sol +6 -2
- package/src/libraries/AdminFallbackProxy.sol +8 -4
- package/src/libraries/ArbitrumChecker.sol +3 -4
- package/src/libraries/CryptographyPrimitives.sol +39 -46
- package/src/libraries/DecimalsConverterHelper.sol +2 -4
- package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
- package/src/libraries/Error.sol +18 -12
- package/src/libraries/GasRefundEnabled.sol +3 -4
- package/src/libraries/MerkleLib.sol +6 -5
- package/src/libraries/UUPSNotUpgradeable.sol +2 -4
- package/src/mocks/BridgeStub.sol +50 -48
- package/src/mocks/BridgeUnproxied.sol +2 -0
- package/src/mocks/InboxStub.sol +22 -17
- package/src/mocks/MerkleTreeAccess.sol +72 -0
- package/src/mocks/MockRollupEventInbox.sol +59 -0
- package/src/mocks/MultiCallTest.sol +3 -1
- package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
- package/src/mocks/Program.sol +9 -7
- package/src/mocks/SequencerInboxBlobMock.sol +38 -0
- package/src/mocks/SequencerInboxStub.sol +9 -12
- package/src/mocks/Simple.sol +13 -25
- package/src/mocks/SimpleCacheManager.sol +10 -3
- package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
- package/src/mocks/SimpleProxy.sol +3 -1
- package/src/mocks/TestWETH9.sol +30 -0
- package/src/mocks/UpgradeExecutorMock.sol +10 -17
- package/src/node-interface/NodeInterface.sol +23 -22
- package/src/node-interface/NodeInterfaceDebug.sol +5 -3
- package/src/osp/HashProofHelper.sol +9 -10
- package/src/osp/IOneStepProofEntry.sol +14 -9
- package/src/osp/IOneStepProver.sol +1 -0
- package/src/osp/OneStepProofEntry.sol +63 -54
- package/src/osp/OneStepProver0.sol +14 -27
- package/src/osp/OneStepProverHostIo.sol +31 -58
- package/src/osp/OneStepProverMath.sol +15 -23
- package/src/osp/OneStepProverMemory.sol +9 -23
- package/src/precompiles/ArbAddressTable.sol +19 -9
- package/src/precompiles/ArbAggregator.sol +12 -4
- package/src/precompiles/ArbBLS.sol +1 -3
- package/src/precompiles/ArbDebug.sol +5 -11
- package/src/precompiles/ArbFunctionTable.sol +7 -10
- package/src/precompiles/ArbGasInfo.sol +9 -43
- package/src/precompiles/ArbInfo.sol +6 -2
- package/src/precompiles/ArbOwner.sol +101 -34
- package/src/precompiles/ArbOwnerPublic.sol +6 -2
- package/src/precompiles/ArbRetryableTx.sol +15 -5
- package/src/precompiles/ArbStatistics.sol +1 -8
- package/src/precompiles/ArbSys.sol +16 -18
- package/src/precompiles/ArbWasm.sol +24 -14
- package/src/precompiles/ArbWasmCache.sol +15 -5
- package/src/precompiles/ArbosTest.sol +3 -1
- package/src/rollup/AbsRollupEventInbox.sol +15 -16
- package/src/rollup/Assertion.sol +100 -0
- package/src/rollup/AssertionState.sol +29 -0
- package/src/rollup/BOLDUpgradeAction.sol +631 -0
- package/src/rollup/BridgeCreator.sol +42 -15
- package/src/rollup/Config.sol +15 -7
- package/src/rollup/DeployHelper.sol +12 -31
- package/src/rollup/ERC20RollupEventInbox.sol +8 -9
- package/src/rollup/FactoryDeployerHelper.sol +8 -10
- package/src/rollup/IRollupAdmin.sol +127 -45
- package/src/rollup/IRollupCore.sol +64 -84
- package/src/rollup/IRollupEventInbox.sol +3 -1
- package/src/rollup/IRollupLogic.sol +36 -69
- package/src/rollup/RollupAdminLogic.sol +224 -203
- package/src/rollup/RollupCore.sol +407 -428
- package/src/rollup/RollupCreator.sol +88 -75
- package/src/rollup/RollupEventInbox.sol +7 -7
- package/src/rollup/RollupLib.sol +50 -86
- package/src/rollup/RollupProxy.sol +8 -12
- package/src/rollup/RollupUserLogic.sol +279 -642
- package/src/rollup/ValidatorUtils.sol +0 -242
- package/src/rollup/ValidatorWallet.sol +22 -38
- package/src/rollup/ValidatorWalletCreator.sol +8 -8
- package/src/state/Deserialize.sol +74 -96
- package/src/state/GlobalState.sol +74 -20
- package/src/state/Instructions.sol +4 -3
- package/src/state/Machine.sol +18 -19
- package/src/state/Module.sol +14 -13
- package/src/state/ModuleMemory.sol +6 -25
- package/src/state/ModuleMemoryCompact.sol +3 -1
- package/src/state/MultiStack.sol +16 -20
- package/src/state/PcArray.sol +7 -7
- package/src/state/StackFrame.sol +21 -14
- package/src/state/Value.sol +18 -6
- package/src/state/ValueArray.sol +7 -7
- package/src/state/ValueStack.sol +9 -3
- package/src/test-helpers/BridgeTester.sol +32 -42
- package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
- package/src/test-helpers/EthVault.sol +4 -2
- package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
- package/src/test-helpers/MessageTester.sol +3 -10
- package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
- package/src/test-helpers/RollupMock.sol +3 -7
- package/src/test-helpers/TestToken.sol +4 -2
- package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
- package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
- package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
- package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
- package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1327
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
- package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1461
- package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1609
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
- package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1743
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
- package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
- package/src/challenge/ChallengeLib.sol +0 -88
- package/src/challenge/ChallengeManager.sol +0 -375
- package/src/challenge/IChallengeManager.sol +0 -86
- package/src/challenge/IChallengeResultReceiver.sol +0 -13
- package/src/mocks/MockResultReceiver.sol +0 -59
- package/src/mocks/SingleExecutionChallenge.sol +0 -41
- package/src/mocks/TimedOutChallengeManager.sol +0 -13
- package/src/rollup/Node.sol +0 -113
@@ -26,13 +26,13 @@
|
|
26
26
|
"anonymous": false,
|
27
27
|
"inputs": [
|
28
28
|
{
|
29
|
-
"indexed":
|
29
|
+
"indexed": false,
|
30
30
|
"internalType": "address",
|
31
|
-
"name": "
|
31
|
+
"name": "anyTrustFastConfirmer",
|
32
32
|
"type": "address"
|
33
33
|
}
|
34
34
|
],
|
35
|
-
"name": "
|
35
|
+
"name": "AnyTrustFastConfirmerSet",
|
36
36
|
"type": "event"
|
37
37
|
},
|
38
38
|
{
|
@@ -40,9 +40,9 @@
|
|
40
40
|
"inputs": [
|
41
41
|
{
|
42
42
|
"indexed": true,
|
43
|
-
"internalType": "
|
44
|
-
"name": "
|
45
|
-
"type": "
|
43
|
+
"internalType": "bytes32",
|
44
|
+
"name": "assertionHash",
|
45
|
+
"type": "bytes32"
|
46
46
|
},
|
47
47
|
{
|
48
48
|
"indexed": false,
|
@@ -57,38 +57,75 @@
|
|
57
57
|
"type": "bytes32"
|
58
58
|
}
|
59
59
|
],
|
60
|
-
"name": "
|
60
|
+
"name": "AssertionConfirmed",
|
61
61
|
"type": "event"
|
62
62
|
},
|
63
63
|
{
|
64
64
|
"anonymous": false,
|
65
65
|
"inputs": [
|
66
|
-
{
|
67
|
-
"indexed": true,
|
68
|
-
"internalType": "uint64",
|
69
|
-
"name": "nodeNum",
|
70
|
-
"type": "uint64"
|
71
|
-
},
|
72
66
|
{
|
73
67
|
"indexed": true,
|
74
68
|
"internalType": "bytes32",
|
75
|
-
"name": "
|
69
|
+
"name": "assertionHash",
|
76
70
|
"type": "bytes32"
|
77
71
|
},
|
78
72
|
{
|
79
73
|
"indexed": true,
|
80
74
|
"internalType": "bytes32",
|
81
|
-
"name": "
|
82
|
-
"type": "bytes32"
|
83
|
-
},
|
84
|
-
{
|
85
|
-
"indexed": false,
|
86
|
-
"internalType": "bytes32",
|
87
|
-
"name": "executionHash",
|
75
|
+
"name": "parentAssertionHash",
|
88
76
|
"type": "bytes32"
|
89
77
|
},
|
90
78
|
{
|
91
79
|
"components": [
|
80
|
+
{
|
81
|
+
"components": [
|
82
|
+
{
|
83
|
+
"internalType": "bytes32",
|
84
|
+
"name": "prevPrevAssertionHash",
|
85
|
+
"type": "bytes32"
|
86
|
+
},
|
87
|
+
{
|
88
|
+
"internalType": "bytes32",
|
89
|
+
"name": "sequencerBatchAcc",
|
90
|
+
"type": "bytes32"
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"components": [
|
94
|
+
{
|
95
|
+
"internalType": "bytes32",
|
96
|
+
"name": "wasmModuleRoot",
|
97
|
+
"type": "bytes32"
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"internalType": "uint256",
|
101
|
+
"name": "requiredStake",
|
102
|
+
"type": "uint256"
|
103
|
+
},
|
104
|
+
{
|
105
|
+
"internalType": "address",
|
106
|
+
"name": "challengeManager",
|
107
|
+
"type": "address"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"internalType": "uint64",
|
111
|
+
"name": "confirmPeriodBlocks",
|
112
|
+
"type": "uint64"
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"internalType": "uint64",
|
116
|
+
"name": "nextInboxPosition",
|
117
|
+
"type": "uint64"
|
118
|
+
}
|
119
|
+
],
|
120
|
+
"internalType": "struct ConfigData",
|
121
|
+
"name": "configData",
|
122
|
+
"type": "tuple"
|
123
|
+
}
|
124
|
+
],
|
125
|
+
"internalType": "struct BeforeStateData",
|
126
|
+
"name": "beforeStateData",
|
127
|
+
"type": "tuple"
|
128
|
+
},
|
92
129
|
{
|
93
130
|
"components": [
|
94
131
|
{
|
@@ -112,9 +149,14 @@
|
|
112
149
|
"internalType": "enum MachineStatus",
|
113
150
|
"name": "machineStatus",
|
114
151
|
"type": "uint8"
|
152
|
+
},
|
153
|
+
{
|
154
|
+
"internalType": "bytes32",
|
155
|
+
"name": "endHistoryRoot",
|
156
|
+
"type": "bytes32"
|
115
157
|
}
|
116
158
|
],
|
117
|
-
"internalType": "struct
|
159
|
+
"internalType": "struct AssertionState",
|
118
160
|
"name": "beforeState",
|
119
161
|
"type": "tuple"
|
120
162
|
},
|
@@ -141,20 +183,20 @@
|
|
141
183
|
"internalType": "enum MachineStatus",
|
142
184
|
"name": "machineStatus",
|
143
185
|
"type": "uint8"
|
186
|
+
},
|
187
|
+
{
|
188
|
+
"internalType": "bytes32",
|
189
|
+
"name": "endHistoryRoot",
|
190
|
+
"type": "bytes32"
|
144
191
|
}
|
145
192
|
],
|
146
|
-
"internalType": "struct
|
193
|
+
"internalType": "struct AssertionState",
|
147
194
|
"name": "afterState",
|
148
195
|
"type": "tuple"
|
149
|
-
},
|
150
|
-
{
|
151
|
-
"internalType": "uint64",
|
152
|
-
"name": "numBlocks",
|
153
|
-
"type": "uint64"
|
154
196
|
}
|
155
197
|
],
|
156
198
|
"indexed": false,
|
157
|
-
"internalType": "struct
|
199
|
+
"internalType": "struct AssertionInputs",
|
158
200
|
"name": "assertion",
|
159
201
|
"type": "tuple"
|
160
202
|
},
|
@@ -164,6 +206,12 @@
|
|
164
206
|
"name": "afterInboxBatchAcc",
|
165
207
|
"type": "bytes32"
|
166
208
|
},
|
209
|
+
{
|
210
|
+
"indexed": false,
|
211
|
+
"internalType": "uint256",
|
212
|
+
"name": "inboxMaxCount",
|
213
|
+
"type": "uint256"
|
214
|
+
},
|
167
215
|
{
|
168
216
|
"indexed": false,
|
169
217
|
"internalType": "bytes32",
|
@@ -173,11 +221,62 @@
|
|
173
221
|
{
|
174
222
|
"indexed": false,
|
175
223
|
"internalType": "uint256",
|
176
|
-
"name": "
|
224
|
+
"name": "requiredStake",
|
225
|
+
"type": "uint256"
|
226
|
+
},
|
227
|
+
{
|
228
|
+
"indexed": false,
|
229
|
+
"internalType": "address",
|
230
|
+
"name": "challengeManager",
|
231
|
+
"type": "address"
|
232
|
+
},
|
233
|
+
{
|
234
|
+
"indexed": false,
|
235
|
+
"internalType": "uint64",
|
236
|
+
"name": "confirmPeriodBlocks",
|
237
|
+
"type": "uint64"
|
238
|
+
}
|
239
|
+
],
|
240
|
+
"name": "AssertionCreated",
|
241
|
+
"type": "event"
|
242
|
+
},
|
243
|
+
{
|
244
|
+
"anonymous": false,
|
245
|
+
"inputs": [
|
246
|
+
{
|
247
|
+
"indexed": true,
|
248
|
+
"internalType": "bytes32",
|
249
|
+
"name": "assertionHash",
|
250
|
+
"type": "bytes32"
|
251
|
+
}
|
252
|
+
],
|
253
|
+
"name": "AssertionForceConfirmed",
|
254
|
+
"type": "event"
|
255
|
+
},
|
256
|
+
{
|
257
|
+
"anonymous": false,
|
258
|
+
"inputs": [
|
259
|
+
{
|
260
|
+
"indexed": true,
|
261
|
+
"internalType": "bytes32",
|
262
|
+
"name": "assertionHash",
|
263
|
+
"type": "bytes32"
|
264
|
+
}
|
265
|
+
],
|
266
|
+
"name": "AssertionForceCreated",
|
267
|
+
"type": "event"
|
268
|
+
},
|
269
|
+
{
|
270
|
+
"anonymous": false,
|
271
|
+
"inputs": [
|
272
|
+
{
|
273
|
+
"indexed": false,
|
274
|
+
"internalType": "uint256",
|
275
|
+
"name": "newBaseStake",
|
177
276
|
"type": "uint256"
|
178
277
|
}
|
179
278
|
],
|
180
|
-
"name": "
|
279
|
+
"name": "BaseStakeSet",
|
181
280
|
"type": "event"
|
182
281
|
},
|
183
282
|
{
|
@@ -185,25 +284,135 @@
|
|
185
284
|
"inputs": [
|
186
285
|
{
|
187
286
|
"indexed": true,
|
287
|
+
"internalType": "address",
|
288
|
+
"name": "beacon",
|
289
|
+
"type": "address"
|
290
|
+
}
|
291
|
+
],
|
292
|
+
"name": "BeaconUpgraded",
|
293
|
+
"type": "event"
|
294
|
+
},
|
295
|
+
{
|
296
|
+
"anonymous": false,
|
297
|
+
"inputs": [
|
298
|
+
{
|
299
|
+
"indexed": false,
|
300
|
+
"internalType": "address",
|
301
|
+
"name": "challengeManager",
|
302
|
+
"type": "address"
|
303
|
+
}
|
304
|
+
],
|
305
|
+
"name": "ChallengeManagerSet",
|
306
|
+
"type": "event"
|
307
|
+
},
|
308
|
+
{
|
309
|
+
"anonymous": false,
|
310
|
+
"inputs": [
|
311
|
+
{
|
312
|
+
"indexed": false,
|
188
313
|
"internalType": "uint64",
|
189
|
-
"name": "
|
314
|
+
"name": "newConfirmPeriod",
|
190
315
|
"type": "uint64"
|
191
316
|
}
|
192
317
|
],
|
193
|
-
"name": "
|
318
|
+
"name": "ConfirmPeriodBlocksSet",
|
194
319
|
"type": "event"
|
195
320
|
},
|
196
321
|
{
|
197
322
|
"anonymous": false,
|
198
323
|
"inputs": [
|
199
324
|
{
|
200
|
-
"indexed":
|
325
|
+
"indexed": false,
|
326
|
+
"internalType": "address",
|
327
|
+
"name": "inbox",
|
328
|
+
"type": "address"
|
329
|
+
},
|
330
|
+
{
|
331
|
+
"indexed": false,
|
332
|
+
"internalType": "bool",
|
333
|
+
"name": "enabled",
|
334
|
+
"type": "bool"
|
335
|
+
}
|
336
|
+
],
|
337
|
+
"name": "DelayedInboxSet",
|
338
|
+
"type": "event"
|
339
|
+
},
|
340
|
+
{
|
341
|
+
"anonymous": false,
|
342
|
+
"inputs": [
|
343
|
+
{
|
344
|
+
"indexed": false,
|
345
|
+
"internalType": "address",
|
346
|
+
"name": "inbox",
|
347
|
+
"type": "address"
|
348
|
+
}
|
349
|
+
],
|
350
|
+
"name": "InboxSet",
|
351
|
+
"type": "event"
|
352
|
+
},
|
353
|
+
{
|
354
|
+
"anonymous": false,
|
355
|
+
"inputs": [
|
356
|
+
{
|
357
|
+
"indexed": false,
|
358
|
+
"internalType": "uint8",
|
359
|
+
"name": "version",
|
360
|
+
"type": "uint8"
|
361
|
+
}
|
362
|
+
],
|
363
|
+
"name": "Initialized",
|
364
|
+
"type": "event"
|
365
|
+
},
|
366
|
+
{
|
367
|
+
"anonymous": false,
|
368
|
+
"inputs": [
|
369
|
+
{
|
370
|
+
"indexed": false,
|
371
|
+
"internalType": "address",
|
372
|
+
"name": "newLoserStakerEscrow",
|
373
|
+
"type": "address"
|
374
|
+
}
|
375
|
+
],
|
376
|
+
"name": "LoserStakeEscrowSet",
|
377
|
+
"type": "event"
|
378
|
+
},
|
379
|
+
{
|
380
|
+
"anonymous": false,
|
381
|
+
"inputs": [
|
382
|
+
{
|
383
|
+
"indexed": false,
|
201
384
|
"internalType": "uint256",
|
202
|
-
"name": "
|
385
|
+
"name": "newPeriod",
|
203
386
|
"type": "uint256"
|
204
387
|
}
|
205
388
|
],
|
206
|
-
"name": "
|
389
|
+
"name": "MinimumAssertionPeriodSet",
|
390
|
+
"type": "event"
|
391
|
+
},
|
392
|
+
{
|
393
|
+
"anonymous": false,
|
394
|
+
"inputs": [
|
395
|
+
{
|
396
|
+
"indexed": false,
|
397
|
+
"internalType": "address",
|
398
|
+
"name": "outbox",
|
399
|
+
"type": "address"
|
400
|
+
}
|
401
|
+
],
|
402
|
+
"name": "OldOutboxRemoved",
|
403
|
+
"type": "event"
|
404
|
+
},
|
405
|
+
{
|
406
|
+
"anonymous": false,
|
407
|
+
"inputs": [
|
408
|
+
{
|
409
|
+
"indexed": false,
|
410
|
+
"internalType": "address",
|
411
|
+
"name": "outbox",
|
412
|
+
"type": "address"
|
413
|
+
}
|
414
|
+
],
|
415
|
+
"name": "OutboxSet",
|
207
416
|
"type": "event"
|
208
417
|
},
|
209
418
|
{
|
@@ -243,7 +452,7 @@
|
|
243
452
|
{
|
244
453
|
"indexed": false,
|
245
454
|
"internalType": "uint64",
|
246
|
-
"name": "
|
455
|
+
"name": "challengedAssertion",
|
247
456
|
"type": "uint64"
|
248
457
|
}
|
249
458
|
],
|
@@ -269,6 +478,32 @@
|
|
269
478
|
"name": "RollupInitialized",
|
270
479
|
"type": "event"
|
271
480
|
},
|
481
|
+
{
|
482
|
+
"anonymous": false,
|
483
|
+
"inputs": [
|
484
|
+
{
|
485
|
+
"indexed": false,
|
486
|
+
"internalType": "address",
|
487
|
+
"name": "newSequencerInbox",
|
488
|
+
"type": "address"
|
489
|
+
}
|
490
|
+
],
|
491
|
+
"name": "SequencerInboxSet",
|
492
|
+
"type": "event"
|
493
|
+
},
|
494
|
+
{
|
495
|
+
"anonymous": false,
|
496
|
+
"inputs": [
|
497
|
+
{
|
498
|
+
"indexed": false,
|
499
|
+
"internalType": "address[]",
|
500
|
+
"name": "staker",
|
501
|
+
"type": "address[]"
|
502
|
+
}
|
503
|
+
],
|
504
|
+
"name": "StakersForceRefunded",
|
505
|
+
"type": "event"
|
506
|
+
},
|
272
507
|
{
|
273
508
|
"anonymous": false,
|
274
509
|
"inputs": [
|
@@ -317,6 +552,12 @@
|
|
317
552
|
"name": "user",
|
318
553
|
"type": "address"
|
319
554
|
},
|
555
|
+
{
|
556
|
+
"indexed": true,
|
557
|
+
"internalType": "address",
|
558
|
+
"name": "withdrawalAddress",
|
559
|
+
"type": "address"
|
560
|
+
},
|
320
561
|
{
|
321
562
|
"indexed": false,
|
322
563
|
"internalType": "uint256",
|
@@ -359,39 +600,97 @@
|
|
359
600
|
"type": "event"
|
360
601
|
},
|
361
602
|
{
|
603
|
+
"anonymous": false,
|
362
604
|
"inputs": [
|
363
605
|
{
|
364
|
-
"
|
365
|
-
"name": "",
|
366
|
-
"type": "address"
|
367
|
-
}
|
368
|
-
],
|
369
|
-
"name": "_stakerMap",
|
370
|
-
"outputs": [
|
371
|
-
{
|
606
|
+
"indexed": false,
|
372
607
|
"internalType": "uint256",
|
373
|
-
"name": "
|
608
|
+
"name": "newPeriod",
|
374
609
|
"type": "uint256"
|
375
|
-
}
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
"
|
385
|
-
|
610
|
+
}
|
611
|
+
],
|
612
|
+
"name": "ValidatorAfkBlocksSet",
|
613
|
+
"type": "event"
|
614
|
+
},
|
615
|
+
{
|
616
|
+
"anonymous": false,
|
617
|
+
"inputs": [
|
618
|
+
{
|
619
|
+
"indexed": false,
|
620
|
+
"internalType": "bool",
|
621
|
+
"name": "_validatorWhitelistDisabled",
|
622
|
+
"type": "bool"
|
623
|
+
}
|
624
|
+
],
|
625
|
+
"name": "ValidatorWhitelistDisabledSet",
|
626
|
+
"type": "event"
|
627
|
+
},
|
628
|
+
{
|
629
|
+
"anonymous": false,
|
630
|
+
"inputs": [
|
631
|
+
{
|
632
|
+
"indexed": false,
|
633
|
+
"internalType": "address[]",
|
634
|
+
"name": "validators",
|
635
|
+
"type": "address[]"
|
636
|
+
},
|
637
|
+
{
|
638
|
+
"indexed": false,
|
639
|
+
"internalType": "bool[]",
|
640
|
+
"name": "enabled",
|
641
|
+
"type": "bool[]"
|
642
|
+
}
|
643
|
+
],
|
644
|
+
"name": "ValidatorsSet",
|
645
|
+
"type": "event"
|
646
|
+
},
|
647
|
+
{
|
648
|
+
"anonymous": false,
|
649
|
+
"inputs": [
|
650
|
+
{
|
651
|
+
"indexed": false,
|
652
|
+
"internalType": "bytes32",
|
653
|
+
"name": "newWasmModuleRoot",
|
654
|
+
"type": "bytes32"
|
655
|
+
}
|
656
|
+
],
|
657
|
+
"name": "WasmModuleRootSet",
|
658
|
+
"type": "event"
|
659
|
+
},
|
660
|
+
{
|
661
|
+
"inputs": [
|
662
|
+
{
|
663
|
+
"internalType": "address",
|
664
|
+
"name": "",
|
665
|
+
"type": "address"
|
666
|
+
}
|
667
|
+
],
|
668
|
+
"name": "_stakerMap",
|
669
|
+
"outputs": [
|
670
|
+
{
|
671
|
+
"internalType": "uint256",
|
672
|
+
"name": "amountStaked",
|
673
|
+
"type": "uint256"
|
674
|
+
},
|
675
|
+
{
|
676
|
+
"internalType": "bytes32",
|
677
|
+
"name": "latestStakedAssertion",
|
678
|
+
"type": "bytes32"
|
679
|
+
},
|
386
680
|
{
|
387
681
|
"internalType": "uint64",
|
388
|
-
"name": "
|
682
|
+
"name": "index",
|
389
683
|
"type": "uint64"
|
390
684
|
},
|
391
685
|
{
|
392
686
|
"internalType": "bool",
|
393
687
|
"name": "isStaked",
|
394
688
|
"type": "bool"
|
689
|
+
},
|
690
|
+
{
|
691
|
+
"internalType": "address",
|
692
|
+
"name": "withdrawalAddress",
|
693
|
+
"type": "address"
|
395
694
|
}
|
396
695
|
],
|
397
696
|
"stateMutability": "view",
|
@@ -468,12 +767,25 @@
|
|
468
767
|
"stateMutability": "view",
|
469
768
|
"type": "function"
|
470
769
|
},
|
770
|
+
{
|
771
|
+
"inputs": [],
|
772
|
+
"name": "challengeGracePeriodBlocks",
|
773
|
+
"outputs": [
|
774
|
+
{
|
775
|
+
"internalType": "uint64",
|
776
|
+
"name": "",
|
777
|
+
"type": "uint64"
|
778
|
+
}
|
779
|
+
],
|
780
|
+
"stateMutability": "view",
|
781
|
+
"type": "function"
|
782
|
+
},
|
471
783
|
{
|
472
784
|
"inputs": [],
|
473
785
|
"name": "challengeManager",
|
474
786
|
"outputs": [
|
475
787
|
{
|
476
|
-
"internalType": "contract
|
788
|
+
"internalType": "contract IEdgeChallengeManager",
|
477
789
|
"name": "",
|
478
790
|
"type": "address"
|
479
791
|
}
|
@@ -496,146 +808,57 @@
|
|
496
808
|
},
|
497
809
|
{
|
498
810
|
"inputs": [
|
811
|
+
{
|
812
|
+
"internalType": "bytes32",
|
813
|
+
"name": "assertionHash",
|
814
|
+
"type": "bytes32"
|
815
|
+
},
|
816
|
+
{
|
817
|
+
"internalType": "bytes32",
|
818
|
+
"name": "parentAssertionHash",
|
819
|
+
"type": "bytes32"
|
820
|
+
},
|
499
821
|
{
|
500
822
|
"components": [
|
501
823
|
{
|
502
824
|
"components": [
|
503
825
|
{
|
504
|
-
"
|
505
|
-
|
506
|
-
|
507
|
-
"name": "bytes32Vals",
|
508
|
-
"type": "bytes32[2]"
|
509
|
-
},
|
510
|
-
{
|
511
|
-
"internalType": "uint64[2]",
|
512
|
-
"name": "u64Vals",
|
513
|
-
"type": "uint64[2]"
|
514
|
-
}
|
515
|
-
],
|
516
|
-
"internalType": "struct GlobalState",
|
517
|
-
"name": "globalState",
|
518
|
-
"type": "tuple"
|
826
|
+
"internalType": "bytes32[2]",
|
827
|
+
"name": "bytes32Vals",
|
828
|
+
"type": "bytes32[2]"
|
519
829
|
},
|
520
830
|
{
|
521
|
-
"internalType": "
|
522
|
-
"name": "
|
523
|
-
"type": "
|
831
|
+
"internalType": "uint64[2]",
|
832
|
+
"name": "u64Vals",
|
833
|
+
"type": "uint64[2]"
|
524
834
|
}
|
525
835
|
],
|
526
|
-
"internalType": "struct
|
527
|
-
"name": "
|
836
|
+
"internalType": "struct GlobalState",
|
837
|
+
"name": "globalState",
|
528
838
|
"type": "tuple"
|
529
839
|
},
|
530
840
|
{
|
531
|
-
"
|
532
|
-
|
533
|
-
|
534
|
-
{
|
535
|
-
"internalType": "bytes32[2]",
|
536
|
-
"name": "bytes32Vals",
|
537
|
-
"type": "bytes32[2]"
|
538
|
-
},
|
539
|
-
{
|
540
|
-
"internalType": "uint64[2]",
|
541
|
-
"name": "u64Vals",
|
542
|
-
"type": "uint64[2]"
|
543
|
-
}
|
544
|
-
],
|
545
|
-
"internalType": "struct GlobalState",
|
546
|
-
"name": "globalState",
|
547
|
-
"type": "tuple"
|
548
|
-
},
|
549
|
-
{
|
550
|
-
"internalType": "enum MachineStatus",
|
551
|
-
"name": "machineStatus",
|
552
|
-
"type": "uint8"
|
553
|
-
}
|
554
|
-
],
|
555
|
-
"internalType": "struct ExecutionState",
|
556
|
-
"name": "afterState",
|
557
|
-
"type": "tuple"
|
841
|
+
"internalType": "enum MachineStatus",
|
842
|
+
"name": "machineStatus",
|
843
|
+
"type": "uint8"
|
558
844
|
},
|
559
845
|
{
|
560
|
-
"internalType": "
|
561
|
-
"name": "
|
562
|
-
"type": "
|
846
|
+
"internalType": "bytes32",
|
847
|
+
"name": "endHistoryRoot",
|
848
|
+
"type": "bytes32"
|
563
849
|
}
|
564
850
|
],
|
565
|
-
"internalType": "struct
|
566
|
-
"name": "
|
851
|
+
"internalType": "struct AssertionState",
|
852
|
+
"name": "confirmState",
|
567
853
|
"type": "tuple"
|
568
|
-
}
|
569
|
-
],
|
570
|
-
"name": "createNitroMigrationGenesis",
|
571
|
-
"outputs": [],
|
572
|
-
"stateMutability": "nonpayable",
|
573
|
-
"type": "function"
|
574
|
-
},
|
575
|
-
{
|
576
|
-
"inputs": [
|
577
|
-
{
|
578
|
-
"internalType": "address",
|
579
|
-
"name": "staker",
|
580
|
-
"type": "address"
|
581
|
-
}
|
582
|
-
],
|
583
|
-
"name": "currentChallenge",
|
584
|
-
"outputs": [
|
585
|
-
{
|
586
|
-
"internalType": "uint64",
|
587
|
-
"name": "",
|
588
|
-
"type": "uint64"
|
589
|
-
}
|
590
|
-
],
|
591
|
-
"stateMutability": "view",
|
592
|
-
"type": "function"
|
593
|
-
},
|
594
|
-
{
|
595
|
-
"inputs": [],
|
596
|
-
"name": "extraChallengeTimeBlocks",
|
597
|
-
"outputs": [
|
598
|
-
{
|
599
|
-
"internalType": "uint64",
|
600
|
-
"name": "",
|
601
|
-
"type": "uint64"
|
602
|
-
}
|
603
|
-
],
|
604
|
-
"stateMutability": "view",
|
605
|
-
"type": "function"
|
606
|
-
},
|
607
|
-
{
|
608
|
-
"inputs": [],
|
609
|
-
"name": "firstUnresolvedNode",
|
610
|
-
"outputs": [
|
611
|
-
{
|
612
|
-
"internalType": "uint64",
|
613
|
-
"name": "",
|
614
|
-
"type": "uint64"
|
615
|
-
}
|
616
|
-
],
|
617
|
-
"stateMutability": "view",
|
618
|
-
"type": "function"
|
619
|
-
},
|
620
|
-
{
|
621
|
-
"inputs": [
|
622
|
-
{
|
623
|
-
"internalType": "uint64",
|
624
|
-
"name": "nodeNum",
|
625
|
-
"type": "uint64"
|
626
854
|
},
|
627
855
|
{
|
628
856
|
"internalType": "bytes32",
|
629
|
-
"name": "
|
630
|
-
"type": "bytes32"
|
631
|
-
},
|
632
|
-
{
|
633
|
-
"internalType": "bytes32",
|
634
|
-
"name": "sendRoot",
|
857
|
+
"name": "inboxAcc",
|
635
858
|
"type": "bytes32"
|
636
859
|
}
|
637
860
|
],
|
638
|
-
"name": "
|
861
|
+
"name": "forceConfirmAssertion",
|
639
862
|
"outputs": [],
|
640
863
|
"stateMutability": "nonpayable",
|
641
864
|
"type": "function"
|
@@ -643,17 +866,61 @@
|
|
643
866
|
{
|
644
867
|
"inputs": [
|
645
868
|
{
|
646
|
-
"internalType": "
|
647
|
-
"name": "
|
648
|
-
"type": "
|
649
|
-
},
|
650
|
-
{
|
651
|
-
"internalType": "uint256",
|
652
|
-
"name": "prevNodeInboxMaxCount",
|
653
|
-
"type": "uint256"
|
869
|
+
"internalType": "bytes32",
|
870
|
+
"name": "prevAssertionHash",
|
871
|
+
"type": "bytes32"
|
654
872
|
},
|
655
873
|
{
|
656
874
|
"components": [
|
875
|
+
{
|
876
|
+
"components": [
|
877
|
+
{
|
878
|
+
"internalType": "bytes32",
|
879
|
+
"name": "prevPrevAssertionHash",
|
880
|
+
"type": "bytes32"
|
881
|
+
},
|
882
|
+
{
|
883
|
+
"internalType": "bytes32",
|
884
|
+
"name": "sequencerBatchAcc",
|
885
|
+
"type": "bytes32"
|
886
|
+
},
|
887
|
+
{
|
888
|
+
"components": [
|
889
|
+
{
|
890
|
+
"internalType": "bytes32",
|
891
|
+
"name": "wasmModuleRoot",
|
892
|
+
"type": "bytes32"
|
893
|
+
},
|
894
|
+
{
|
895
|
+
"internalType": "uint256",
|
896
|
+
"name": "requiredStake",
|
897
|
+
"type": "uint256"
|
898
|
+
},
|
899
|
+
{
|
900
|
+
"internalType": "address",
|
901
|
+
"name": "challengeManager",
|
902
|
+
"type": "address"
|
903
|
+
},
|
904
|
+
{
|
905
|
+
"internalType": "uint64",
|
906
|
+
"name": "confirmPeriodBlocks",
|
907
|
+
"type": "uint64"
|
908
|
+
},
|
909
|
+
{
|
910
|
+
"internalType": "uint64",
|
911
|
+
"name": "nextInboxPosition",
|
912
|
+
"type": "uint64"
|
913
|
+
}
|
914
|
+
],
|
915
|
+
"internalType": "struct ConfigData",
|
916
|
+
"name": "configData",
|
917
|
+
"type": "tuple"
|
918
|
+
}
|
919
|
+
],
|
920
|
+
"internalType": "struct BeforeStateData",
|
921
|
+
"name": "beforeStateData",
|
922
|
+
"type": "tuple"
|
923
|
+
},
|
657
924
|
{
|
658
925
|
"components": [
|
659
926
|
{
|
@@ -677,9 +944,14 @@
|
|
677
944
|
"internalType": "enum MachineStatus",
|
678
945
|
"name": "machineStatus",
|
679
946
|
"type": "uint8"
|
947
|
+
},
|
948
|
+
{
|
949
|
+
"internalType": "bytes32",
|
950
|
+
"name": "endHistoryRoot",
|
951
|
+
"type": "bytes32"
|
680
952
|
}
|
681
953
|
],
|
682
|
-
"internalType": "struct
|
954
|
+
"internalType": "struct AssertionState",
|
683
955
|
"name": "beforeState",
|
684
956
|
"type": "tuple"
|
685
957
|
},
|
@@ -706,29 +978,29 @@
|
|
706
978
|
"internalType": "enum MachineStatus",
|
707
979
|
"name": "machineStatus",
|
708
980
|
"type": "uint8"
|
981
|
+
},
|
982
|
+
{
|
983
|
+
"internalType": "bytes32",
|
984
|
+
"name": "endHistoryRoot",
|
985
|
+
"type": "bytes32"
|
709
986
|
}
|
710
987
|
],
|
711
|
-
"internalType": "struct
|
988
|
+
"internalType": "struct AssertionState",
|
712
989
|
"name": "afterState",
|
713
990
|
"type": "tuple"
|
714
|
-
},
|
715
|
-
{
|
716
|
-
"internalType": "uint64",
|
717
|
-
"name": "numBlocks",
|
718
|
-
"type": "uint64"
|
719
991
|
}
|
720
992
|
],
|
721
|
-
"internalType": "struct
|
993
|
+
"internalType": "struct AssertionInputs",
|
722
994
|
"name": "assertion",
|
723
995
|
"type": "tuple"
|
724
996
|
},
|
725
997
|
{
|
726
998
|
"internalType": "bytes32",
|
727
|
-
"name": "
|
999
|
+
"name": "expectedAssertionHash",
|
728
1000
|
"type": "bytes32"
|
729
1001
|
}
|
730
1002
|
],
|
731
|
-
"name": "
|
1003
|
+
"name": "forceCreateAssertion",
|
732
1004
|
"outputs": [],
|
733
1005
|
"stateMutability": "nonpayable",
|
734
1006
|
"type": "function"
|
@@ -747,97 +1019,62 @@
|
|
747
1019
|
"type": "function"
|
748
1020
|
},
|
749
1021
|
{
|
750
|
-
"inputs": [
|
751
|
-
|
752
|
-
|
753
|
-
"name": "stakerA",
|
754
|
-
"type": "address[]"
|
755
|
-
},
|
1022
|
+
"inputs": [],
|
1023
|
+
"name": "genesisAssertionHash",
|
1024
|
+
"outputs": [
|
756
1025
|
{
|
757
|
-
"internalType": "
|
758
|
-
"name": "
|
759
|
-
"type": "
|
1026
|
+
"internalType": "bytes32",
|
1027
|
+
"name": "",
|
1028
|
+
"type": "bytes32"
|
760
1029
|
}
|
761
1030
|
],
|
762
|
-
"
|
763
|
-
"outputs": [],
|
764
|
-
"stateMutability": "nonpayable",
|
1031
|
+
"stateMutability": "pure",
|
765
1032
|
"type": "function"
|
766
1033
|
},
|
767
1034
|
{
|
768
1035
|
"inputs": [
|
769
1036
|
{
|
770
|
-
"internalType": "
|
771
|
-
"name": "
|
772
|
-
"type": "
|
1037
|
+
"internalType": "bytes32",
|
1038
|
+
"name": "assertionHash",
|
1039
|
+
"type": "bytes32"
|
773
1040
|
}
|
774
1041
|
],
|
775
|
-
"name": "
|
1042
|
+
"name": "getAssertion",
|
776
1043
|
"outputs": [
|
777
1044
|
{
|
778
1045
|
"components": [
|
779
|
-
{
|
780
|
-
"internalType": "bytes32",
|
781
|
-
"name": "stateHash",
|
782
|
-
"type": "bytes32"
|
783
|
-
},
|
784
|
-
{
|
785
|
-
"internalType": "bytes32",
|
786
|
-
"name": "challengeHash",
|
787
|
-
"type": "bytes32"
|
788
|
-
},
|
789
|
-
{
|
790
|
-
"internalType": "bytes32",
|
791
|
-
"name": "confirmData",
|
792
|
-
"type": "bytes32"
|
793
|
-
},
|
794
|
-
{
|
795
|
-
"internalType": "uint64",
|
796
|
-
"name": "prevNum",
|
797
|
-
"type": "uint64"
|
798
|
-
},
|
799
|
-
{
|
800
|
-
"internalType": "uint64",
|
801
|
-
"name": "deadlineBlock",
|
802
|
-
"type": "uint64"
|
803
|
-
},
|
804
1046
|
{
|
805
1047
|
"internalType": "uint64",
|
806
|
-
"name": "
|
1048
|
+
"name": "firstChildBlock",
|
807
1049
|
"type": "uint64"
|
808
1050
|
},
|
809
1051
|
{
|
810
1052
|
"internalType": "uint64",
|
811
|
-
"name": "
|
1053
|
+
"name": "secondChildBlock",
|
812
1054
|
"type": "uint64"
|
813
1055
|
},
|
814
1056
|
{
|
815
1057
|
"internalType": "uint64",
|
816
|
-
"name": "
|
1058
|
+
"name": "createdAtBlock",
|
817
1059
|
"type": "uint64"
|
818
1060
|
},
|
819
1061
|
{
|
820
|
-
"internalType": "
|
821
|
-
"name": "
|
822
|
-
"type": "
|
1062
|
+
"internalType": "bool",
|
1063
|
+
"name": "isFirstChild",
|
1064
|
+
"type": "bool"
|
823
1065
|
},
|
824
1066
|
{
|
825
|
-
"internalType": "
|
826
|
-
"name": "
|
827
|
-
"type": "
|
828
|
-
},
|
829
|
-
{
|
830
|
-
"internalType": "uint64",
|
831
|
-
"name": "createdAtBlock",
|
832
|
-
"type": "uint64"
|
1067
|
+
"internalType": "enum AssertionStatus",
|
1068
|
+
"name": "status",
|
1069
|
+
"type": "uint8"
|
833
1070
|
},
|
834
1071
|
{
|
835
1072
|
"internalType": "bytes32",
|
836
|
-
"name": "
|
1073
|
+
"name": "configHash",
|
837
1074
|
"type": "bytes32"
|
838
1075
|
}
|
839
1076
|
],
|
840
|
-
"internalType": "struct
|
1077
|
+
"internalType": "struct AssertionNode",
|
841
1078
|
"name": "",
|
842
1079
|
"type": "tuple"
|
843
1080
|
}
|
@@ -848,12 +1085,12 @@
|
|
848
1085
|
{
|
849
1086
|
"inputs": [
|
850
1087
|
{
|
851
|
-
"internalType": "
|
852
|
-
"name": "
|
853
|
-
"type": "
|
1088
|
+
"internalType": "bytes32",
|
1089
|
+
"name": "assertionHash",
|
1090
|
+
"type": "bytes32"
|
854
1091
|
}
|
855
1092
|
],
|
856
|
-
"name": "
|
1093
|
+
"name": "getAssertionCreationBlockForLogLookup",
|
857
1094
|
"outputs": [
|
858
1095
|
{
|
859
1096
|
"internalType": "uint256",
|
@@ -864,6 +1101,44 @@
|
|
864
1101
|
"stateMutability": "view",
|
865
1102
|
"type": "function"
|
866
1103
|
},
|
1104
|
+
{
|
1105
|
+
"inputs": [
|
1106
|
+
{
|
1107
|
+
"internalType": "bytes32",
|
1108
|
+
"name": "assertionHash",
|
1109
|
+
"type": "bytes32"
|
1110
|
+
}
|
1111
|
+
],
|
1112
|
+
"name": "getFirstChildCreationBlock",
|
1113
|
+
"outputs": [
|
1114
|
+
{
|
1115
|
+
"internalType": "uint64",
|
1116
|
+
"name": "",
|
1117
|
+
"type": "uint64"
|
1118
|
+
}
|
1119
|
+
],
|
1120
|
+
"stateMutability": "view",
|
1121
|
+
"type": "function"
|
1122
|
+
},
|
1123
|
+
{
|
1124
|
+
"inputs": [
|
1125
|
+
{
|
1126
|
+
"internalType": "bytes32",
|
1127
|
+
"name": "assertionHash",
|
1128
|
+
"type": "bytes32"
|
1129
|
+
}
|
1130
|
+
],
|
1131
|
+
"name": "getSecondChildCreationBlock",
|
1132
|
+
"outputs": [
|
1133
|
+
{
|
1134
|
+
"internalType": "uint64",
|
1135
|
+
"name": "",
|
1136
|
+
"type": "uint64"
|
1137
|
+
}
|
1138
|
+
],
|
1139
|
+
"stateMutability": "view",
|
1140
|
+
"type": "function"
|
1141
|
+
},
|
867
1142
|
{
|
868
1143
|
"inputs": [
|
869
1144
|
{
|
@@ -882,24 +1157,24 @@
|
|
882
1157
|
"type": "uint256"
|
883
1158
|
},
|
884
1159
|
{
|
885
|
-
"internalType": "
|
886
|
-
"name": "
|
887
|
-
"type": "
|
888
|
-
},
|
889
|
-
{
|
890
|
-
"internalType": "uint64",
|
891
|
-
"name": "latestStakedNode",
|
892
|
-
"type": "uint64"
|
1160
|
+
"internalType": "bytes32",
|
1161
|
+
"name": "latestStakedAssertion",
|
1162
|
+
"type": "bytes32"
|
893
1163
|
},
|
894
1164
|
{
|
895
1165
|
"internalType": "uint64",
|
896
|
-
"name": "
|
1166
|
+
"name": "index",
|
897
1167
|
"type": "uint64"
|
898
1168
|
},
|
899
1169
|
{
|
900
1170
|
"internalType": "bool",
|
901
1171
|
"name": "isStaked",
|
902
1172
|
"type": "bool"
|
1173
|
+
},
|
1174
|
+
{
|
1175
|
+
"internalType": "address",
|
1176
|
+
"name": "withdrawalAddress",
|
1177
|
+
"type": "address"
|
903
1178
|
}
|
904
1179
|
],
|
905
1180
|
"internalType": "struct IRollupCore.Staker",
|
@@ -929,6 +1204,19 @@
|
|
929
1204
|
"stateMutability": "view",
|
930
1205
|
"type": "function"
|
931
1206
|
},
|
1207
|
+
{
|
1208
|
+
"inputs": [],
|
1209
|
+
"name": "getValidators",
|
1210
|
+
"outputs": [
|
1211
|
+
{
|
1212
|
+
"internalType": "address[]",
|
1213
|
+
"name": "",
|
1214
|
+
"type": "address[]"
|
1215
|
+
}
|
1216
|
+
],
|
1217
|
+
"stateMutability": "view",
|
1218
|
+
"type": "function"
|
1219
|
+
},
|
932
1220
|
{
|
933
1221
|
"inputs": [],
|
934
1222
|
"name": "inbox",
|
@@ -951,11 +1239,6 @@
|
|
951
1239
|
"name": "confirmPeriodBlocks",
|
952
1240
|
"type": "uint64"
|
953
1241
|
},
|
954
|
-
{
|
955
|
-
"internalType": "uint64",
|
956
|
-
"name": "extraChallengeTimeBlocks",
|
957
|
-
"type": "uint64"
|
958
|
-
},
|
959
1242
|
{
|
960
1243
|
"internalType": "address",
|
961
1244
|
"name": "stakeToken",
|
@@ -992,9 +1275,9 @@
|
|
992
1275
|
"type": "string"
|
993
1276
|
},
|
994
1277
|
{
|
995
|
-
"internalType": "
|
996
|
-
"name": "
|
997
|
-
"type": "
|
1278
|
+
"internalType": "uint256[]",
|
1279
|
+
"name": "miniStakeValues",
|
1280
|
+
"type": "uint256[]"
|
998
1281
|
},
|
999
1282
|
{
|
1000
1283
|
"components": [
|
@@ -1014,13 +1297,104 @@
|
|
1014
1297
|
"type": "uint256"
|
1015
1298
|
},
|
1016
1299
|
{
|
1017
|
-
"internalType": "uint256",
|
1018
|
-
"name": "futureSeconds",
|
1019
|
-
"type": "uint256"
|
1300
|
+
"internalType": "uint256",
|
1301
|
+
"name": "futureSeconds",
|
1302
|
+
"type": "uint256"
|
1303
|
+
}
|
1304
|
+
],
|
1305
|
+
"internalType": "struct ISequencerInbox.MaxTimeVariation",
|
1306
|
+
"name": "sequencerInboxMaxTimeVariation",
|
1307
|
+
"type": "tuple"
|
1308
|
+
},
|
1309
|
+
{
|
1310
|
+
"internalType": "uint256",
|
1311
|
+
"name": "layerZeroBlockEdgeHeight",
|
1312
|
+
"type": "uint256"
|
1313
|
+
},
|
1314
|
+
{
|
1315
|
+
"internalType": "uint256",
|
1316
|
+
"name": "layerZeroBigStepEdgeHeight",
|
1317
|
+
"type": "uint256"
|
1318
|
+
},
|
1319
|
+
{
|
1320
|
+
"internalType": "uint256",
|
1321
|
+
"name": "layerZeroSmallStepEdgeHeight",
|
1322
|
+
"type": "uint256"
|
1323
|
+
},
|
1324
|
+
{
|
1325
|
+
"components": [
|
1326
|
+
{
|
1327
|
+
"components": [
|
1328
|
+
{
|
1329
|
+
"internalType": "bytes32[2]",
|
1330
|
+
"name": "bytes32Vals",
|
1331
|
+
"type": "bytes32[2]"
|
1332
|
+
},
|
1333
|
+
{
|
1334
|
+
"internalType": "uint64[2]",
|
1335
|
+
"name": "u64Vals",
|
1336
|
+
"type": "uint64[2]"
|
1337
|
+
}
|
1338
|
+
],
|
1339
|
+
"internalType": "struct GlobalState",
|
1340
|
+
"name": "globalState",
|
1341
|
+
"type": "tuple"
|
1342
|
+
},
|
1343
|
+
{
|
1344
|
+
"internalType": "enum MachineStatus",
|
1345
|
+
"name": "machineStatus",
|
1346
|
+
"type": "uint8"
|
1347
|
+
},
|
1348
|
+
{
|
1349
|
+
"internalType": "bytes32",
|
1350
|
+
"name": "endHistoryRoot",
|
1351
|
+
"type": "bytes32"
|
1352
|
+
}
|
1353
|
+
],
|
1354
|
+
"internalType": "struct AssertionState",
|
1355
|
+
"name": "genesisAssertionState",
|
1356
|
+
"type": "tuple"
|
1357
|
+
},
|
1358
|
+
{
|
1359
|
+
"internalType": "uint256",
|
1360
|
+
"name": "genesisInboxCount",
|
1361
|
+
"type": "uint256"
|
1362
|
+
},
|
1363
|
+
{
|
1364
|
+
"internalType": "address",
|
1365
|
+
"name": "anyTrustFastConfirmer",
|
1366
|
+
"type": "address"
|
1367
|
+
},
|
1368
|
+
{
|
1369
|
+
"internalType": "uint8",
|
1370
|
+
"name": "numBigStepLevel",
|
1371
|
+
"type": "uint8"
|
1372
|
+
},
|
1373
|
+
{
|
1374
|
+
"internalType": "uint64",
|
1375
|
+
"name": "challengeGracePeriodBlocks",
|
1376
|
+
"type": "uint64"
|
1377
|
+
},
|
1378
|
+
{
|
1379
|
+
"components": [
|
1380
|
+
{
|
1381
|
+
"internalType": "uint64",
|
1382
|
+
"name": "threshold",
|
1383
|
+
"type": "uint64"
|
1384
|
+
},
|
1385
|
+
{
|
1386
|
+
"internalType": "uint64",
|
1387
|
+
"name": "max",
|
1388
|
+
"type": "uint64"
|
1389
|
+
},
|
1390
|
+
{
|
1391
|
+
"internalType": "uint64",
|
1392
|
+
"name": "replenishRateInBasis",
|
1393
|
+
"type": "uint64"
|
1020
1394
|
}
|
1021
1395
|
],
|
1022
|
-
"internalType": "struct
|
1023
|
-
"name": "
|
1396
|
+
"internalType": "struct BufferConfig",
|
1397
|
+
"name": "bufferConfig",
|
1024
1398
|
"type": "tuple"
|
1025
1399
|
}
|
1026
1400
|
],
|
@@ -1056,7 +1430,7 @@
|
|
1056
1430
|
"type": "address"
|
1057
1431
|
},
|
1058
1432
|
{
|
1059
|
-
"internalType": "contract
|
1433
|
+
"internalType": "contract IEdgeChallengeManager",
|
1060
1434
|
"name": "challengeManager",
|
1061
1435
|
"type": "address"
|
1062
1436
|
},
|
@@ -1070,11 +1444,6 @@
|
|
1070
1444
|
"name": "rollupUserLogic",
|
1071
1445
|
"type": "address"
|
1072
1446
|
},
|
1073
|
-
{
|
1074
|
-
"internalType": "address",
|
1075
|
-
"name": "validatorUtils",
|
1076
|
-
"type": "address"
|
1077
|
-
},
|
1078
1447
|
{
|
1079
1448
|
"internalType": "address",
|
1080
1449
|
"name": "validatorWalletCreator",
|
@@ -1094,12 +1463,12 @@
|
|
1094
1463
|
{
|
1095
1464
|
"inputs": [
|
1096
1465
|
{
|
1097
|
-
"internalType": "
|
1098
|
-
"name": "
|
1099
|
-
"type": "
|
1466
|
+
"internalType": "bytes32",
|
1467
|
+
"name": "assertionHash",
|
1468
|
+
"type": "bytes32"
|
1100
1469
|
}
|
1101
1470
|
],
|
1102
|
-
"name": "
|
1471
|
+
"name": "isFirstChild",
|
1103
1472
|
"outputs": [
|
1104
1473
|
{
|
1105
1474
|
"internalType": "bool",
|
@@ -1113,12 +1482,12 @@
|
|
1113
1482
|
{
|
1114
1483
|
"inputs": [
|
1115
1484
|
{
|
1116
|
-
"internalType": "
|
1117
|
-
"name": "
|
1118
|
-
"type": "
|
1485
|
+
"internalType": "bytes32",
|
1486
|
+
"name": "assertionHash",
|
1487
|
+
"type": "bytes32"
|
1119
1488
|
}
|
1120
1489
|
],
|
1121
|
-
"name": "
|
1490
|
+
"name": "isPending",
|
1122
1491
|
"outputs": [
|
1123
1492
|
{
|
1124
1493
|
"internalType": "bool",
|
@@ -1133,11 +1502,11 @@
|
|
1133
1502
|
"inputs": [
|
1134
1503
|
{
|
1135
1504
|
"internalType": "address",
|
1136
|
-
"name": "",
|
1505
|
+
"name": "staker",
|
1137
1506
|
"type": "address"
|
1138
1507
|
}
|
1139
1508
|
],
|
1140
|
-
"name": "
|
1509
|
+
"name": "isStaked",
|
1141
1510
|
"outputs": [
|
1142
1511
|
{
|
1143
1512
|
"internalType": "bool",
|
@@ -1152,11 +1521,11 @@
|
|
1152
1521
|
"inputs": [
|
1153
1522
|
{
|
1154
1523
|
"internalType": "address",
|
1155
|
-
"name": "
|
1524
|
+
"name": "validator",
|
1156
1525
|
"type": "address"
|
1157
1526
|
}
|
1158
1527
|
],
|
1159
|
-
"name": "
|
1528
|
+
"name": "isValidator",
|
1160
1529
|
"outputs": [
|
1161
1530
|
{
|
1162
1531
|
"internalType": "bool",
|
@@ -1167,40 +1536,14 @@
|
|
1167
1536
|
"stateMutability": "view",
|
1168
1537
|
"type": "function"
|
1169
1538
|
},
|
1170
|
-
{
|
1171
|
-
"inputs": [],
|
1172
|
-
"name": "lastStakeBlock",
|
1173
|
-
"outputs": [
|
1174
|
-
{
|
1175
|
-
"internalType": "uint64",
|
1176
|
-
"name": "",
|
1177
|
-
"type": "uint64"
|
1178
|
-
}
|
1179
|
-
],
|
1180
|
-
"stateMutability": "view",
|
1181
|
-
"type": "function"
|
1182
|
-
},
|
1183
1539
|
{
|
1184
1540
|
"inputs": [],
|
1185
1541
|
"name": "latestConfirmed",
|
1186
1542
|
"outputs": [
|
1187
1543
|
{
|
1188
|
-
"internalType": "
|
1189
|
-
"name": "",
|
1190
|
-
"type": "uint64"
|
1191
|
-
}
|
1192
|
-
],
|
1193
|
-
"stateMutability": "view",
|
1194
|
-
"type": "function"
|
1195
|
-
},
|
1196
|
-
{
|
1197
|
-
"inputs": [],
|
1198
|
-
"name": "latestNodeCreated",
|
1199
|
-
"outputs": [
|
1200
|
-
{
|
1201
|
-
"internalType": "uint64",
|
1544
|
+
"internalType": "bytes32",
|
1202
1545
|
"name": "",
|
1203
|
-
"type": "
|
1546
|
+
"type": "bytes32"
|
1204
1547
|
}
|
1205
1548
|
],
|
1206
1549
|
"stateMutability": "view",
|
@@ -1214,12 +1557,12 @@
|
|
1214
1557
|
"type": "address"
|
1215
1558
|
}
|
1216
1559
|
],
|
1217
|
-
"name": "
|
1560
|
+
"name": "latestStakedAssertion",
|
1218
1561
|
"outputs": [
|
1219
1562
|
{
|
1220
|
-
"internalType": "
|
1563
|
+
"internalType": "bytes32",
|
1221
1564
|
"name": "",
|
1222
|
-
"type": "
|
1565
|
+
"type": "bytes32"
|
1223
1566
|
}
|
1224
1567
|
],
|
1225
1568
|
"stateMutability": "view",
|
@@ -1251,30 +1594,6 @@
|
|
1251
1594
|
"stateMutability": "view",
|
1252
1595
|
"type": "function"
|
1253
1596
|
},
|
1254
|
-
{
|
1255
|
-
"inputs": [
|
1256
|
-
{
|
1257
|
-
"internalType": "uint64",
|
1258
|
-
"name": "nodeNum",
|
1259
|
-
"type": "uint64"
|
1260
|
-
},
|
1261
|
-
{
|
1262
|
-
"internalType": "address",
|
1263
|
-
"name": "staker",
|
1264
|
-
"type": "address"
|
1265
|
-
}
|
1266
|
-
],
|
1267
|
-
"name": "nodeHasStaker",
|
1268
|
-
"outputs": [
|
1269
|
-
{
|
1270
|
-
"internalType": "bool",
|
1271
|
-
"name": "",
|
1272
|
-
"type": "bool"
|
1273
|
-
}
|
1274
|
-
],
|
1275
|
-
"stateMutability": "view",
|
1276
|
-
"type": "function"
|
1277
|
-
},
|
1278
1597
|
{
|
1279
1598
|
"inputs": [],
|
1280
1599
|
"name": "outbox",
|
@@ -1406,6 +1725,19 @@
|
|
1406
1725
|
"stateMutability": "nonpayable",
|
1407
1726
|
"type": "function"
|
1408
1727
|
},
|
1728
|
+
{
|
1729
|
+
"inputs": [
|
1730
|
+
{
|
1731
|
+
"internalType": "address",
|
1732
|
+
"name": "_challengeManager",
|
1733
|
+
"type": "address"
|
1734
|
+
}
|
1735
|
+
],
|
1736
|
+
"name": "setChallengeManager",
|
1737
|
+
"outputs": [],
|
1738
|
+
"stateMutability": "nonpayable",
|
1739
|
+
"type": "function"
|
1740
|
+
},
|
1409
1741
|
{
|
1410
1742
|
"inputs": [
|
1411
1743
|
{
|
@@ -1437,19 +1769,6 @@
|
|
1437
1769
|
"stateMutability": "nonpayable",
|
1438
1770
|
"type": "function"
|
1439
1771
|
},
|
1440
|
-
{
|
1441
|
-
"inputs": [
|
1442
|
-
{
|
1443
|
-
"internalType": "uint64",
|
1444
|
-
"name": "newExtraTimeBlocks",
|
1445
|
-
"type": "uint64"
|
1446
|
-
}
|
1447
|
-
],
|
1448
|
-
"name": "setExtraChallengeTimeBlocks",
|
1449
|
-
"outputs": [],
|
1450
|
-
"stateMutability": "nonpayable",
|
1451
|
-
"type": "function"
|
1452
|
-
},
|
1453
1772
|
{
|
1454
1773
|
"inputs": [
|
1455
1774
|
{
|
@@ -1528,19 +1847,6 @@
|
|
1528
1847
|
"stateMutability": "nonpayable",
|
1529
1848
|
"type": "function"
|
1530
1849
|
},
|
1531
|
-
{
|
1532
|
-
"inputs": [
|
1533
|
-
{
|
1534
|
-
"internalType": "address",
|
1535
|
-
"name": "newStakeToken",
|
1536
|
-
"type": "address"
|
1537
|
-
}
|
1538
|
-
],
|
1539
|
-
"name": "setStakeToken",
|
1540
|
-
"outputs": [],
|
1541
|
-
"stateMutability": "nonpayable",
|
1542
|
-
"type": "function"
|
1543
|
-
},
|
1544
1850
|
{
|
1545
1851
|
"inputs": [
|
1546
1852
|
{
|
@@ -1559,6 +1865,19 @@
|
|
1559
1865
|
"stateMutability": "nonpayable",
|
1560
1866
|
"type": "function"
|
1561
1867
|
},
|
1868
|
+
{
|
1869
|
+
"inputs": [
|
1870
|
+
{
|
1871
|
+
"internalType": "uint64",
|
1872
|
+
"name": "newAfkBlocks",
|
1873
|
+
"type": "uint64"
|
1874
|
+
}
|
1875
|
+
],
|
1876
|
+
"name": "setValidatorAfkBlocks",
|
1877
|
+
"outputs": [],
|
1878
|
+
"stateMutability": "nonpayable",
|
1879
|
+
"type": "function"
|
1880
|
+
},
|
1562
1881
|
{
|
1563
1882
|
"inputs": [
|
1564
1883
|
{
|
@@ -1624,24 +1943,6 @@
|
|
1624
1943
|
"stateMutability": "view",
|
1625
1944
|
"type": "function"
|
1626
1945
|
},
|
1627
|
-
{
|
1628
|
-
"inputs": [
|
1629
|
-
{
|
1630
|
-
"internalType": "address",
|
1631
|
-
"name": "beacon",
|
1632
|
-
"type": "address"
|
1633
|
-
},
|
1634
|
-
{
|
1635
|
-
"internalType": "address",
|
1636
|
-
"name": "newImplementation",
|
1637
|
-
"type": "address"
|
1638
|
-
}
|
1639
|
-
],
|
1640
|
-
"name": "upgradeBeacon",
|
1641
|
-
"outputs": [],
|
1642
|
-
"stateMutability": "nonpayable",
|
1643
|
-
"type": "function"
|
1644
|
-
},
|
1645
1946
|
{
|
1646
1947
|
"inputs": [
|
1647
1948
|
{
|
@@ -1704,14 +2005,116 @@
|
|
1704
2005
|
"stateMutability": "payable",
|
1705
2006
|
"type": "function"
|
1706
2007
|
},
|
2008
|
+
{
|
2009
|
+
"inputs": [
|
2010
|
+
{
|
2011
|
+
"internalType": "bytes32",
|
2012
|
+
"name": "assertionHash",
|
2013
|
+
"type": "bytes32"
|
2014
|
+
},
|
2015
|
+
{
|
2016
|
+
"components": [
|
2017
|
+
{
|
2018
|
+
"components": [
|
2019
|
+
{
|
2020
|
+
"internalType": "bytes32[2]",
|
2021
|
+
"name": "bytes32Vals",
|
2022
|
+
"type": "bytes32[2]"
|
2023
|
+
},
|
2024
|
+
{
|
2025
|
+
"internalType": "uint64[2]",
|
2026
|
+
"name": "u64Vals",
|
2027
|
+
"type": "uint64[2]"
|
2028
|
+
}
|
2029
|
+
],
|
2030
|
+
"internalType": "struct GlobalState",
|
2031
|
+
"name": "globalState",
|
2032
|
+
"type": "tuple"
|
2033
|
+
},
|
2034
|
+
{
|
2035
|
+
"internalType": "enum MachineStatus",
|
2036
|
+
"name": "machineStatus",
|
2037
|
+
"type": "uint8"
|
2038
|
+
},
|
2039
|
+
{
|
2040
|
+
"internalType": "bytes32",
|
2041
|
+
"name": "endHistoryRoot",
|
2042
|
+
"type": "bytes32"
|
2043
|
+
}
|
2044
|
+
],
|
2045
|
+
"internalType": "struct AssertionState",
|
2046
|
+
"name": "state",
|
2047
|
+
"type": "tuple"
|
2048
|
+
},
|
2049
|
+
{
|
2050
|
+
"internalType": "bytes32",
|
2051
|
+
"name": "prevAssertionHash",
|
2052
|
+
"type": "bytes32"
|
2053
|
+
},
|
2054
|
+
{
|
2055
|
+
"internalType": "bytes32",
|
2056
|
+
"name": "inboxAcc",
|
2057
|
+
"type": "bytes32"
|
2058
|
+
}
|
2059
|
+
],
|
2060
|
+
"name": "validateAssertionHash",
|
2061
|
+
"outputs": [],
|
2062
|
+
"stateMutability": "pure",
|
2063
|
+
"type": "function"
|
2064
|
+
},
|
2065
|
+
{
|
2066
|
+
"inputs": [
|
2067
|
+
{
|
2068
|
+
"internalType": "bytes32",
|
2069
|
+
"name": "assertionHash",
|
2070
|
+
"type": "bytes32"
|
2071
|
+
},
|
2072
|
+
{
|
2073
|
+
"components": [
|
2074
|
+
{
|
2075
|
+
"internalType": "bytes32",
|
2076
|
+
"name": "wasmModuleRoot",
|
2077
|
+
"type": "bytes32"
|
2078
|
+
},
|
2079
|
+
{
|
2080
|
+
"internalType": "uint256",
|
2081
|
+
"name": "requiredStake",
|
2082
|
+
"type": "uint256"
|
2083
|
+
},
|
2084
|
+
{
|
2085
|
+
"internalType": "address",
|
2086
|
+
"name": "challengeManager",
|
2087
|
+
"type": "address"
|
2088
|
+
},
|
2089
|
+
{
|
2090
|
+
"internalType": "uint64",
|
2091
|
+
"name": "confirmPeriodBlocks",
|
2092
|
+
"type": "uint64"
|
2093
|
+
},
|
2094
|
+
{
|
2095
|
+
"internalType": "uint64",
|
2096
|
+
"name": "nextInboxPosition",
|
2097
|
+
"type": "uint64"
|
2098
|
+
}
|
2099
|
+
],
|
2100
|
+
"internalType": "struct ConfigData",
|
2101
|
+
"name": "configData",
|
2102
|
+
"type": "tuple"
|
2103
|
+
}
|
2104
|
+
],
|
2105
|
+
"name": "validateConfig",
|
2106
|
+
"outputs": [],
|
2107
|
+
"stateMutability": "view",
|
2108
|
+
"type": "function"
|
2109
|
+
},
|
1707
2110
|
{
|
1708
2111
|
"inputs": [],
|
1709
|
-
"name": "
|
2112
|
+
"name": "validatorAfkBlocks",
|
1710
2113
|
"outputs": [
|
1711
2114
|
{
|
1712
|
-
"internalType": "
|
2115
|
+
"internalType": "uint64",
|
1713
2116
|
"name": "",
|
1714
|
-
"type": "
|
2117
|
+
"type": "uint64"
|
1715
2118
|
}
|
1716
2119
|
],
|
1717
2120
|
"stateMutability": "view",
|
@@ -1777,58 +2180,26 @@
|
|
1777
2180
|
},
|
1778
2181
|
{
|
1779
2182
|
"inputs": [
|
1780
|
-
{
|
1781
|
-
"internalType": "uint256",
|
1782
|
-
"name": "zombieNum",
|
1783
|
-
"type": "uint256"
|
1784
|
-
}
|
1785
|
-
],
|
1786
|
-
"name": "zombieAddress",
|
1787
|
-
"outputs": [
|
1788
2183
|
{
|
1789
2184
|
"internalType": "address",
|
1790
|
-
"name": "",
|
2185
|
+
"name": "staker",
|
1791
2186
|
"type": "address"
|
1792
2187
|
}
|
1793
2188
|
],
|
1794
|
-
"
|
1795
|
-
"type": "function"
|
1796
|
-
},
|
1797
|
-
{
|
1798
|
-
"inputs": [],
|
1799
|
-
"name": "zombieCount",
|
1800
|
-
"outputs": [
|
1801
|
-
{
|
1802
|
-
"internalType": "uint256",
|
1803
|
-
"name": "",
|
1804
|
-
"type": "uint256"
|
1805
|
-
}
|
1806
|
-
],
|
1807
|
-
"stateMutability": "view",
|
1808
|
-
"type": "function"
|
1809
|
-
},
|
1810
|
-
{
|
1811
|
-
"inputs": [
|
1812
|
-
{
|
1813
|
-
"internalType": "uint256",
|
1814
|
-
"name": "zombieNum",
|
1815
|
-
"type": "uint256"
|
1816
|
-
}
|
1817
|
-
],
|
1818
|
-
"name": "zombieLatestStakedNode",
|
2189
|
+
"name": "withdrawalAddress",
|
1819
2190
|
"outputs": [
|
1820
2191
|
{
|
1821
|
-
"internalType": "
|
2192
|
+
"internalType": "address",
|
1822
2193
|
"name": "",
|
1823
|
-
"type": "
|
2194
|
+
"type": "address"
|
1824
2195
|
}
|
1825
2196
|
],
|
1826
2197
|
"stateMutability": "view",
|
1827
2198
|
"type": "function"
|
1828
2199
|
}
|
1829
2200
|
],
|
1830
|
-
"bytecode": "0x60c0604052620000196200003660201b62002d4e1760201c565b15156080523060a0523480156200002f57600080fd5b5062000111565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000769190620000d3565b600060405180830381855afa9150503d8060008114620000b3576040519150601f19603f3d011682016040523d82523d6000602084013e620000b8565b606091505b5091509150818015620000cc575080516020145b9250505090565b6000825160005b81811015620000f65760208186018101518583015201620000da565b8181111562000106576000828501525b509190910192915050565b60805160a051615b4c6200018b600039600081816110dc0152818161111c015281816111ff0152818161123f01528181611a5c01528181611a9c01528181611c3f01528181611c7f01528181611d71015281816126390152612679015260008181612b5f0152818161328801526145c80152615b4c6000f3fe6080604052600436106103b65760003560e01c80637b83a3fe116101f9578063bc45e0ae1161011e578063ee35f327116100b6578063f63a434a1161007a578063f63a434a14610e09578063facd743b14610e29578063fb0e722b14610e59578063fc8ffa0314610e79578063ff204f3b14610e9957600080fd5b8063ee35f32714610d53578063ef40a67014610d73578063f065de3f14610da9578063f33e1fac14610dc9578063f38c937914610de957600080fd5b8063bc45e0ae14610bc4578063ce11e6ab14610be4578063ce66d05c14610c04578063d01e660214610c24578063d735e21d14610c44578063dcd030aa14610c69578063dff6978714610c89578063e78cea9214610c9e578063e8bd492214610cbe57600080fd5b806392c8134c1161019157806392c8134c146109bf578063948d6588146109ec5780639846129a14610a0c5780639a8a059214610a1f578063a23c44b114610a35578063a2b4f1d814610b44578063a3ffb77214610b64578063aa38a6e714610b84578063aa65af4814610ba457600080fd5b80637b83a3fe146108ba5780637ba9534a146108da5780637c75c298146108ef5780638456cb591461090f578063848bf918146109245780638640ce5f1461094457806389384960146109695780638ee1a1261461098957806391c657e81461099f57600080fd5b806347fb24c5116102df5780636136fe2e116102775780636136fe2e146107685780636177fd181461078857806363721d6b146107cb57806365f7f80d146107e057806369fd251c146107fe5780636ddd37441461084757806371ef232c1461086757806376e7e23b1461087d578063771b2f971461089357600080fd5b806347fb24c5146106635780634f1ef286146106835780634f61f8501461069657806351ed6a30146106b657806352d1902d146106d657806353b60c4a146106eb57806355840a581461070b578063567ca41b146107305780635c975abb1461075057600080fd5b80631b1689e9116103525780631b1689e9146104f257806328ff127a146105165780632e7acfa6146105365780632f30cabd1461056e5780632f7968e8146105a45780633659cfe6146105c45780633e96576e146105e457806345e38b641461062d578063470dce4e1461064357600080fd5b8063014cc92c146103bb578063023a96fe146103f15780630397d45814610411578063046f7da21461043357806306ae5851146104485780630d40a0fd146104685780630d561b371461048857806312ab3d3b146104a857806313af4035146104d2575b600080fd5b3480156103c757600080fd5b50606f546103db906001600160a01b031681565b6040516103e89190614e65565b60405180910390f35b3480156103fd57600080fd5b50606e546103db906001600160a01b031681565b34801561041d57600080fd5b5061043161042c366004614e8e565b610eb9565b005b34801561043f57600080fd5b5061043161108b565b34801561045457600080fd5b50610431610463366004614eab565b6110af565b34801561047457600080fd5b50610431610483366004614e8e565b6110d1565b34801561049457600080fd5b506104316104a3366004614e8e565b611191565b3480156104b457600080fd5b50607e546104c29060ff1681565b60405190151581526020016103e8565b3480156104de57600080fd5b506104316104ed366004614e8e565b6111ce565b3480156104fe57600080fd5b50610508607d5481565b6040519081526020016103e8565b34801561052257600080fd5b50610431610531366004614ec4565b6111f4565b34801561054257600080fd5b50606554610556906001600160401b031681565b6040516001600160401b0390911681526020016103e8565b34801561057a57600080fd5b50610508610589366004614e8e565b6001600160a01b03166000908152607b602052604090205490565b3480156105b057600080fd5b506104316105bf366004614f3c565b611a05565b3480156105d057600080fd5b506104316105df366004614e8e565b611a51565b3480156105f057600080fd5b506105566105ff366004614e8e565b6001600160a01b0316600090815260796020526040902060010154600160401b90046001600160401b031690565b34801561063957600080fd5b5061050860735481565b34801561064f57600080fd5b5061043161065e366004614f88565b611b0e565b34801561066f57600080fd5b5061043161067e366004614fdd565b611bb2565b610431610691366004615084565b611c34565b3480156106a257600080fd5b506104316106b1366004614e8e565b611ce5565b3480156106c257600080fd5b506072546103db906001600160a01b031681565b3480156106e257600080fd5b50610508611d64565b3480156106f757600080fd5b50610431610706366004614e8e565b611e12565b34801561071757600080fd5b50607e546103db9061010090046001600160a01b031681565b34801561073c57600080fd5b5061043161074b366004614e8e565b611e4a565b34801561075c57600080fd5b5060335460ff166104c2565b34801561077457600080fd5b5061043161078336600461512b565b611f17565b34801561079457600080fd5b506104c26107a3366004614e8e565b6001600160a01b0316600090815260796020526040902060010154600160c01b900460ff1690565b3480156107d757600080fd5b50607a54610508565b3480156107ec57600080fd5b506075546001600160401b0316610556565b34801561080a57600080fd5b50610556610819366004614e8e565b6001600160a01b0316600090815260796020526040902060010154600160801b90046001600160401b031690565b34801561085357600080fd5b506103db61086236600461512b565b611f59565b34801561087357600080fd5b50610508607c5481565b34801561088957600080fd5b5061050860675481565b34801561089f57600080fd5b5060655461055690600160401b90046001600160401b031681565b3480156108c657600080fd5b506104316108d5366004615146565b611f92565b3480156108e657600080fd5b50610556612295565b3480156108fb57600080fd5b5061043161090a3660046151ae565b6122ab565b34801561091b57600080fd5b5061043161241f565b34801561093057600080fd5b5061043161093f3660046151ef565b612443565b34801561095057600080fd5b50607554600160c01b90046001600160401b0316610556565b34801561097557600080fd5b50610431610984366004614eab565b6124bf565b34801561099557600080fd5b5061050860685481565b3480156109ab57600080fd5b506104c26109ba366004614e8e565b6124e1565b3480156109cb57600080fd5b506109df6109da36600461512b565b612545565b6040516103e8919061521d565b3480156109f857600080fd5b50610431610a07366004614eab565b61260c565b610431610a1a366004615084565b61262e565b348015610a2b57600080fd5b5061050860665481565b348015610a4157600080fd5b50610aef610a50366004614e8e565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b0316600090815260796020908152604091829020825160a081018452815481526001909101546001600160401b0380821693830193909352600160401b8104831693820193909352600160801b83049091166060820152600160c01b90910460ff161515608082015290565b6040516103e89190600060a0820190508251825260208301516001600160401b038082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b348015610b5057600080fd5b50610431610b5f366004615319565b6126db565b348015610b7057600080fd5b50610431610b7f366004615336565b612706565b348015610b9057600080fd5b50606d546103db906001600160a01b031681565b348015610bb057600080fd5b506104c2610bbf3660046153a1565b6127fa565b348015610bd057600080fd5b506070546103db906001600160a01b031681565b348015610bf057600080fd5b50606b546103db906001600160a01b031681565b348015610c1057600080fd5b50610431610c1f36600461512b565b612831565b348015610c3057600080fd5b506103db610c3f366004614eab565b6128bc565b348015610c5057600080fd5b50607554600160401b90046001600160401b0316610556565b348015610c7557600080fd5b506104c2610c84366004614e8e565b6128d1565b348015610c9557600080fd5b50607854610556565b348015610caa57600080fd5b50606a546103db906001600160a01b031681565b348015610cca57600080fd5b50610d1b610cd9366004614e8e565b607960205260009081526040902080546001909101546001600160401b0380821691600160401b8104821691600160801b82041690600160c01b900460ff1685565b604080519586526001600160401b0394851660208701529284169285019290925290911660608301521515608082015260a0016103e8565b348015610d5f57600080fd5b50606c546103db906001600160a01b031681565b348015610d7f57600080fd5b50610508610d8e366004614e8e565b6001600160a01b031660009081526079602052604090205490565b348015610db557600080fd5b506071546103db906001600160a01b031681565b348015610dd557600080fd5b50610556610de4366004614eab565b612914565b348015610df557600080fd5b50610431610e04366004615336565b61294b565b348015610e1557600080fd5b50610508610e2436600461512b565b612b5b565b348015610e3557600080fd5b506104c2610e44366004614e8e565b60746020526000908152604090205460ff1681565b348015610e6557600080fd5b506069546103db906001600160a01b031681565b348015610e8557600080fd5b50610431610e94366004614e8e565b612c24565b348015610ea557600080fd5b50610431610eb4366004614e8e565b612cb6565b60335460ff16610ee45760405162461bcd60e51b8152600401610edb906153bd565b60405180910390fd5b6000806001600160a01b0316826001600160a01b0316141590506000306001600160a01b031663cd205fda6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3957600080fd5b505afa158015610f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7191906153eb565b905081151581151514610fbe5760405162461bcd60e51b81526020600482015260156024820152741393d7d554d15497d313d1d250d7d4d5541413d495605a1b6044820152606401610edb565b6078546001600160401b03161561100b5760405162461bcd60e51b81526020600482015260116024820152704e4f5f4143544956455f5354414b45525360781b6044820152606401610edb565b607c54156110515760405162461bcd60e51b81526020600482015260136024820152724e4f5f50454e44494e475f574954484452415760681b6044820152606401610edb565b607280546001600160a01b0319166001600160a01b038516179055604051600d90600080516020615ad083398151915290600090a2505050565b611093612de6565b604051600490600080516020615ad083398151915290600090a2565b6067819055604051600c90600080516020615ad083398151915290600090a250565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561111a5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661114c612e4c565b6001600160a01b0316146111725760405162461bcd60e51b8152600401610edb90615454565b6040805160008082526020820190925261118e91839190612e6d565b50565b607e8054610100600160a81b0319166101006001600160a01b03841602179055604051601f90600080516020615ad083398151915290600090a250565b6111d78161300d565b604051600790600080516020615ad083398151915290600090a250565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561123d5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661126f612e4c565b6001600160a01b0316146112955760405162461bcd60e51b8152600401610edb90615454565b600054610100900460ff166112b05760005460ff16156112b4565b303b155b6113175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610edb565b600054610100900460ff16158015611339576000805461ffff19166101011790555b43607d5561134a6020830183614e8e565b606a80546001600160a01b0319166001600160a01b039290921691909117905561137a6040830160208401614e8e565b606c80546001600160a01b0319166001600160a01b03929092169190911790556113a76020830183614e8e565b6001600160a01b03166347fb24c56113c56060850160408601614e8e565b60016040518363ffffffff1660e01b81526004016113e49291906154a0565b600060405180830381600087803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50611424925050506020830183614e8e565b6001600160a01b0316634f61f8506114426040850160208601614e8e565b6040518263ffffffff1660e01b815260040161145e9190614e65565b600060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b506114a1925050506060830160408401614e8e565b606980546001600160a01b0319166001600160a01b03929092169190911790556114d16080830160608401614e8e565b606b80546001600160a01b0319166001600160a01b03929092169190911790556114fe6020830183614e8e565b6001600160a01b031663cee3d72861151c6080850160608601614e8e565b60016040518363ffffffff1660e01b815260040161153b9291906154a0565b600060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b5061157e9250505060a0830160808401614e8e565b606d80546001600160a01b0319166001600160a01b03929092169190911790556115ab6020830183614e8e565b6001600160a01b03166347fb24c56115c960a0850160808601614e8e565b60016040518363ffffffff1660e01b81526004016115e89291906154a0565b600060405180830381600087803b15801561160257600080fd5b505af1158015611616573d6000803e3d6000fd5b5061162b9250505060a0830160808401614e8e565b6001600160a01b031663cf8d56d660e085013561164c6101008701876154bb565b6040518463ffffffff1660e01b815260040161166a93929190615501565b600060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b506116ad925050506040830160208401614e8e565b60405163e0bc972960e01b815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b15801561171e57600080fd5b505af1158015611732573d6000803e3d6000fd5b506117499250505061012083016101008401614e8e565b606f80546001600160a01b0319166001600160a01b039290921691909117905561177b61014083016101208401614e8e565b607080546001600160a01b0319166001600160a01b03929092169190911790556117ab60c0830160a08401614e8e565b606e80546001600160a01b0319166001600160a01b039290921691909117905560006117d5613061565b90506117e0816130b4565b6117ed602085018561512b565b6065805467ffffffffffffffff19166001600160401b039290921691909117905561181e604085016020860161512b565b606580546001600160401b0392909216600160401b0267ffffffffffffffff60401b1990921691909117905560e084013560665560608401356067556080840135606855604b60735561186f61334c565b6001600160a01b031661188860e0860160c08701614e8e565b6001600160a01b031614156118d65760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa2a9a1a927abafa0a226a4a760611b6044820152606401610edb565b6118e660c0850160a08601614e8e565b6001600160a01b03166118ff60e0860160c08701614e8e565b6001600160a01b0316141561194d5760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa2a9a1a927abafa7aba722a960611b6044820152606401610edb565b61195d60e0850160c08601614e8e565b607180546001600160a01b0319166001600160a01b039290921691909117905561198d6060850160408601614e8e565b607280546001600160a01b0319166001600160a01b0392909216919091179055604080516080860135815260e086013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a1508015611a00576000805461ff00191690555b505050565b60335460ff16611a275760405162461bcd60e51b8152600401610edb906153bd565b611a32838383613374565b604051601890600080516020615ad083398151915290600090a2505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611a9a5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611acc612e4c565b6001600160a01b031614611af25760405162461bcd60e51b8152600401610edb90615454565b6040805160008082526020820190925261118e918391906134ce565b60335460ff16611b305760405162461bcd60e51b8152600401610edb906153bd565b6075546001600160401b03858116911614611b855760405162461bcd60e51b815260206004820152601560248201527413d3931657d310551154d517d0d3d3919254935151605a1b6044820152606401610edb565b611b9182858584613648565b50604051601790600080516020615ad083398151915290600090a250505050565b606a546040516347fb24c560e01b81526001600160a01b03909116906347fb24c590611be490859085906004016154a0565b600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b505060405160029250600080516020615ad08339815191529150600090a25050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611c7d5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611caf612e4c565b6001600160a01b031614611cd55760405162461bcd60e51b8152600401610edb90615454565b611ce1828260016134ce565b5050565b606a546040516304f61f8560e41b81526001600160a01b0390911690634f61f85090611d15908490600401614e65565b600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b5050604051601b9250600080516020615ad08339815191529150600090a250565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dff5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610edb565b50600080516020615ab083398151915290565b606980546001600160a01b0319166001600160a01b038316179055604051601c90600080516020615ad083398151915290600090a250565b606b546001600160a01b0382811691161415611e955760405162461bcd60e51b815260206004820152600a602482015269086aaa4be9eaaa8849eb60b31b6044820152606401610edb565b606a546040516319dc7ae560e31b81526001600160a01b039091169063cee3d72890611ec89084906000906004016154a0565b600060405180830381600087803b158015611ee257600080fd5b505af1158015611ef6573d6000803e3d6000fd5b505060405160019250600080516020615ad08339815191529150600090a250565b6065805467ffffffffffffffff60401b1916600160401b6001600160401b03841602179055604051600a90600080516020615ad083398151915290600090a250565b60006078826001600160401b031681548110611f7757611f77615537565b6000918252602090912001546001600160a01b031692915050565b60335460ff16611fb45760405162461bcd60e51b8152600401610edb906153bd565b60006001611fc0612295565b6001600160401b0316156120105760405162461bcd60e51b81526020600482015260176024820152761393d397d1d1539154d254d7d393d11154d7d1561254d5604a1b6044820152606401610edb565b61201983613c5c565b6120585760405162461bcd60e51b815260206004820152601060248201526f4e4f545f454d5054595f4245464f524560801b6044820152606401610edb565b600161206a60a0850160808601615572565b600381111561207b5761207b61554d565b146120c85760405162461bcd60e51b815260206004820152601b60248201527f4245464f52455f4d414348494e455f4e4f545f46494e495348454400000000006044820152606401610edb565b60c0830135821461210f5760405162461bcd60e51b81526020600482015260116024820152701393d517d6915493d7d4d153911493d3d5607a1b6044820152606401610edb565b6001600160401b03811661212a610100850160e0860161512b565b6001600160401b0316146121735760405162461bcd60e51b815260206004820152601060248201526f494e424f585f4e4f545f41545f4f4e4560801b6044820152606401610edb565b6121856101208401610100850161512b565b6001600160401b0316156121db5760405162461bcd60e51b815260206004820152601c60248201527f504f534954494f4e5f494e5f4d4553534147455f4e4f545f5a45524f000000006044820152606401610edb565b60016121ef61014085016101208601615572565b60038111156122005761220061554d565b1461224d5760405162461bcd60e51b815260206004820152601a60248201527f41465445525f4d414348494e455f4e4f545f46494e49534845440000000000006044820152606401610edb565b60a08301356122688460006001600160401b03851681613648565b5061227560018285613374565b604051601d90600080516020615ad083398151915290600090a250505050565b607554600160801b90046001600160401b031690565b60335460ff166122cd5760405162461bcd60e51b8152600401610edb906153bd565b806122ea5760405162461bcd60e51b8152600401610edb9061558d565b60005b8181101561240057600060798185858581811061230c5761230c615537565b90506020020160208101906123219190614e8e565b6001600160a01b03168152602081019190915260400160002060010154600160801b90046001600160401b03161461238d5760405162461bcd60e51b815260206004820152600f60248201526e14d51052d15497d25397d0d2105313608a1b6044820152606401610edb565b6123be8383838181106123a2576123a2615537565b90506020020160208101906123b79190614e8e565b6000613cb8565b506123ee8383838181106123d4576123d4615537565b90506020020160208101906123e99190614e8e565b613d7d565b806123f8816155c8565b9150506122ed565b50604051601690600080516020615ad083398151915290600090a25050565b612427613e23565b604051600390600080516020615ad083398151915290600090a2565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe69061246f908490600401614e65565b600060405180830381600087803b15801561248957600080fd5b505af115801561249d573d6000803e3d6000fd5b505060405160149250600080516020615ad08339815191529150600090a25050565b6068819055604051601a90600080516020615ad083398151915290600090a250565b6000805b607a5481101561253c57607a818154811061250257612502615537565b6000918252602090912001546001600160a01b038481169116141561252a5750600192915050565b80612534816155c8565b9150506124e5565b50600092915050565b61254d614d40565b6001600160401b03821660009081526076602052604090206040805161018081018252825481526001830154602082015260028301549181019190915260038201546001600160401b038082166060840152600160401b80830482166080850152600160801b808404831660a0860152600160c01b93849004831660c0860152600486015480841660e0870152918204831661010086015281048216610120850152919091041661014082015260059091015461016082015292915050565b6073819055604051600890600080516020615ad083398151915290600090a250565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156126775760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126a9612e4c565b6001600160a01b0316146126cf5760405162461bcd60e51b8152600401610edb90615454565b611ce182826001612e6d565b607e805460ff1916821515179055604051601e90600080516020615ad083398151915290600090a250565b826127235760405162461bcd60e51b8152600401610edb9061558d565b8281146127425760405162461bcd60e51b8152600401610edb906155e3565b60005b838110156127d95782828281811061275f5761275f615537565b90506020020160208101906127749190615319565b6074600087878581811061278a5761278a615537565b905060200201602081019061279f9190614e8e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806127d1816155c8565b915050612745565b50604051600690600080516020615ad083398151915290600090a250505050565b6001600160401b03821660009081526077602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6000816001600160401b0316116128835760405162461bcd60e51b81526020600482015260166024820152751253959053125117d0d3d39192549357d411549253d160521b6044820152606401610edb565b6065805467ffffffffffffffff19166001600160401b038316179055604051600990600080516020615ad083398151915290600090a250565b6000607a8281548110611f7757611f77615537565b6001600160a01b038116600090815260796020526040812060010154600160c01b900460ff16801561282b575060755461282b906001600160401b0316836127fa565b6000607a828154811061292957612929615537565b600091825260209091200154600160a01b90046001600160401b031692915050565b60335460ff1661296d5760405162461bcd60e51b8152600401610edb906153bd565b8261298a5760405162461bcd60e51b8152600401610edb9061558d565b8281146129a95760405162461bcd60e51b8152600401610edb906155e3565b60005b83811015612b3a576000612a0c8686848181106129cb576129cb615537565b90506020020160208101906129e09190614e8e565b8585858181106129f2576129f2615537565b9050602002016020810190612a079190614e8e565b613e9e565b90506001600160401b038116612a535760405162461bcd60e51b815260206004820152600c60248201526b1393d517d25397d0d210531360a21b6044820152606401610edb565b612aab868684818110612a6857612a68615537565b9050602002016020810190612a7d9190614e8e565b6001600160a01b03166000908152607960205260409020600101805467ffffffffffffffff60801b19169055565b612ac0848484818110612a6857612a68615537565b606e546040516356e9df9760e01b81526001600160401b03831660048201526001600160a01b03909116906356e9df9790602401600060405180830381600087803b158015612b0e57600080fd5b505af1158015612b22573d6000803e3d6000fd5b50505050508080612b32906155c8565b9150506129ac565b50604051601590600080516020615ad083398151915290600090a250505050565b60007f000000000000000000000000000000000000000000000000000000000000000015612bb9576001600160401b0382166000908152607f60205260409020548061282b5760405162461bcd60e51b8152600401610edb90615609565b6001600160401b03821660009081526076602052604081206003810154909150600160401b90046001600160401b0316612c055760405162461bcd60e51b8152600401610edb90615609565b60040154600160c01b90046001600160401b031692915050565b919050565b612c2c61334c565b6001600160a01b0316816001600160a01b03161415612c7e5760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f455343524f5760901b6044820152606401610edb565b607180546001600160a01b0319166001600160a01b038316179055604051601990600080516020615ad083398151915290600090a250565b606b80546001600160a01b0319166001600160a01b0383811691909117909155606a546040516319dc7ae560e31b815291169063cee3d72890612d009084906001906004016154a0565b600060405180830381600087803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b505060405160009250600080516020615ad083398151915291508290a250565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491612d8c9190615656565b600060405180830381855afa9150503d8060008114612dc7576040519150601f19603f3d011682016040523d82523d6000602084013e612dcc565b606091505b5091509150818015612ddf575080516020145b9250505090565b60335460ff16612e085760405162461bcd60e51b8152600401610edb906153bd565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051612e429190614e65565b60405180910390a1565b6000600080516020615ab08339815191525b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff1615612ea057611a0083613f6c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ed957600080fd5b505afa925050508015612f09575060408051601f3d908101601f19168201909252612f0691810190615672565b60015b612f765760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d604482015277706c656d656e746174696f6e206973206e6f74205555505360401b6064820152608401610edb565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146130015760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f6044820152721b99185c9e481c1c9bde1a58589b1955555251606a1b6064820152608401610edb565b50611a00838383614027565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61303661334c565b604080516001600160a01b03928316815291841660208301520160405180910390a161118e81614052565b613069614d40565b613071614da4565b60006130a360405180604001604052808481526020016001600381111561309a5761309a61554d565b905260016140de565b9050612ddf81600080804381614123565b6130bc614177565b60008080526076602090815282517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a181958558201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a1819595560408201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195a5560608201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195b8054608085015160a086015160c08701516001600160401b039586166001600160801b031994851617600160401b9387168402176001600160801b03908116600160801b93881684026001600160c01b0390811691909117600160c01b93891684021790965560e08901517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195c80546101008c01516101208d01516101408e0151948c169290991691909117908a169096029590951790911694871690920290941692909217919093169091021790556101608201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195d5561326090600161568b565b607560086101000a8154816001600160401b0302191690836001600160401b031602179055507f00000000000000000000000000000000000000000000000000000000000000001561118e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132e657600080fd5b505afa1580156132fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331e9190615672565b60008052607f6020527f18b3a2798575d3a428c1f52e616a74b071539854e037e7d7c535365d474f40335550565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103612e5e565b6001600160401b038316600090815260766020526040902061339683836141a8565b8160020154146133d75760405162461bcd60e51b815260206004820152600c60248201526b434f4e4649524d5f4441544160a01b6044820152606401610edb565b606b54604051630502677360e51b815260048101849052602481018590526001600160a01b039091169063a04cee6090604401600060405180830381600087803b15801561342457600080fd5b505af1158015613438573d6000803e3d6000fd5b50506075805467ffffffffffffffff19166001600160401b03881617905550613464905084600161568b565b6075805467ffffffffffffffff60401b1916600160401b6001600160401b03938416021790556040805185815260208101859052918616917f22ef0479a7ff660660d1c2fe35f1b632cf31675c2d9378db8cec95b00d8ffa3c91015b60405180910390a250505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561350157611a00836141c4565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561353a57600080fd5b505afa92505050801561356a575060408051601f3d908101601f1916820190925261356791810190615672565b60015b6135cd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610edb565b600080516020615ab0833981519152811461363c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610edb565b50611a00838383614246565b6000600161365e61014087016101208801615572565b600381111561366f5761366f61554d565b148061369d5750600261368a61014087016101208801615572565b600381111561369b5761369b61554d565b145b6136dc5760405162461bcd60e51b815260206004820152601060248201526f4241445f41465445525f53544154555360801b6044820152606401610edb565b6136e4614dc9565b6136ed85612545565b6060820152606a54604080516221048360e21b815290516001600160a01b03909216916284120c91600480820192602092909190829003018186803b15801561373557600080fd5b505afa158015613749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376d9190615672565b815260608101515161377f878661424f565b146137be5760405162461bcd60e51b815260206004820152600f60248201526e0a0a48aacbea6a882a88abe9082a69608b1b6044820152606401610edb565b60006137da6137d536899003890160a08a01615778565b61428b565b905060006137f06137d5368a90038a018a615778565b9050806001600160401b0316826001600160401b031610156138465760405162461bcd60e51b815260206004820152600f60248201526e494e424f585f4241434b574152445360881b6044820152606401610edb565b806001600160401b0316826001600160401b031614156138ec57613877613872368a90038a018a615778565b6142a0565b6001600160401b0316613895613872368b90038b0160a08c01615778565b6001600160401b031610156138ec5760405162461bcd60e51b815260206004820152601a60248201527f494e424f585f504f535f494e5f4d53475f4241434b57415244530000000000006044820152606401610edb565b60026139006101408a016101208b01615572565b60038111156139115761391161554d565b148061393a5750600061392f613872368b90038b0160a08c01615778565b6001600160401b0316115b1561394d578161394981615794565b9250505b82516001600160401b03831611156139985760405162461bcd60e51b815260206004820152600e60248201526d12539093d617d41054d517d1539160921b6044820152606401610edb565b6001600160401b03821615613a4057606a546001600160a01b03166316bf55796139c36001856157bb565b6040516001600160e01b031960e084901b1681526001600160401b03909116600482015260240160206040518083038186803b158015613a0257600080fd5b505afa158015613a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3a9190615672565b60e08401525b50613a5a9050613a5536889003880188615822565b6142af565b6040820152606554613a75906001600160401b03164361568b565b6001600160401b0390811660c0830152606082015161012001511615801560a0830152613acb57606081015161012001516001600160401b03166000908152607660205260409020600501546080820152613adb565b6060810151610160015160808201525b613afa8160a00151826080015183604001518460e0015160685461434e565b915082821480613b08575082155b613b4b5760405162461bcd60e51b81526020600482015260146024820152730aa9c8ab0a08a86a88a88be9c9e888abe9082a6960631b6044820152606401610edb565b613b93613b5f8760a001836000015161424f565b613b708360400151436068546143bb565b613b87613b82368b90038b018b615822565b6143fa565b888560c0015187614123565b60208201526000613ba2612295565b613bad90600161568b565b90506000613bcf876001600160401b0316600090815260766020526040902090565b9050613bdb8183614424565b613be88360200151614495565b50508181606001516101600151613bfd612295565b6001600160401b03167f4f4caa9e67fb994e349dd35d1ad0ce23053d4323f83ce11dc817b5435031d09684604001518a8660e001516068548860000151604051613c4b95949392919061590c565b60405180910390a450949350505050565b60008135158015613c6f57506020820135155b8015613c915750613c86606083016040840161512b565b6001600160401b0316155b801561282b5750613ca8608083016060840161512b565b6001600160401b03161592915050565b6001600160a01b0382166000908152607960205260408120805480841115613d155760405162461bcd60e51b815260206004820152601060248201526f544f4f5f4c4954544c455f5354414b4560801b6044820152606401610edb565b6000613d21858361596c565b8584559050613d308682614683565b60408051838152602081018790526001600160a01b038816917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a295945050505050565b6001600160a01b03808216600081815260796020908152604080832081518083019092529381526001808501546001600160401b03600160401b9091048116938301938452607a8054928301815590945290517ff0440771a29e57e18c66727944770b82cc77924aef333c927ce6bdd2cdb3ae0390910180549251909316600160a01b026001600160e01b031990921694169390931792909217909155611ce18261471f565b60335460ff1615613e695760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610edb565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e353390565b6001600160a01b03828116600090815260796020526040808220928416825281206001830154919291600160801b90046001600160401b031680613f0e5760405162461bcd60e51b81526020600482015260076024820152661393d7d0d2105360ca1b6044820152606401610edb565b60018201546001600160401b03828116600160801b9092041614613f635760405162461bcd60e51b815260206004820152600c60248201526b1112519197d25397d0d2105360a21b6044820152606401610edb565b95945050505050565b6001600160a01b0381163b613fe35760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e74604482015276185d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd604a1b6064820152608401610edb565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b614030836148e2565b60008251118061403d5750805b15611a005761404c8383614922565b50505050565b6001600160a01b0381166140b75760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610edb565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103614006565b60006140ed8360000151614947565b82846020015160405160200161410593929190615983565b60405160208183030381529060405280519060200120905092915050565b61412b614d40565b614133614d40565b96875250602086019490945260408501929092526001600160401b0390811660608501529081166080840181905260a0840152431661014083015261016082015290565b600054610100900460ff1661419e5760405162461bcd60e51b8152600401610edb906159c1565b6141a66149bb565b565b6040805160208101849052908101829052600090606001614105565b6001600160a01b0381163b6142315760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610edb565b80600080516020615ab0833981519152614006565b614030836149ee565b600061426861426336859003850185615778565b614947565b8261427960a0860160808701615572565b60405160200161410593929190615983565b6020810151600090815b602002015192915050565b60208101516000906001614295565b60006142b9614e1a565b825160200151819060038111156142d2576142d261554d565b908160038111156142e5576142e561554d565b9052506020838101518101519082019060038111156143065761430661554d565b908160038111156143195761431961554d565b905250614324614e38565b8351518152602080850151519082015260408401516143469083908390614a2e565b949350505050565b6000808661435d576000614360565b60015b6040516001600160f81b031960f883901b1660208201526021810188905260418101879052606181018690526081810185905290915060a1016040516020818303038152906040528051906020012091505095945050505050565b6040805160208101859052908101839052606081018290526000906080015b6040516020818303038152906040528051906020012090505b9392505050565b600061282b614410836020015160000151614ad8565b60208401515161441f90614ae3565b6141a8565b6004820154600160401b90046001600160401b03166144655760048201805467ffffffffffffffff60401b1916600160401b436001600160401b0316021790555b600490910180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b60758054600160801b90046001600160401b03169060106144b583615794565b825461010092830a6001600160401b03818102199092169282160291909117909255607554600160801b908190048316600090815260766020908152604091829020875181559087015160018201559086015160028201556060860151600382018054608089015160a08a015160c08b01519489166001600160801b031993841617600160401b928a168302176001600160801b03908116918a1688026001600160c01b0390811692909217600160c01b968b1687021790945560e08b0151600487018054998d01516101208e01516101408f0151938d169b9096169a909a17998b16909302989098179093169188169095029091161793909416909302919091179055610160830151600590910155507f00000000000000000000000000000000000000000000000000000000000000001561118e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561462657600080fd5b505afa15801561463a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465e9190615672565b607554600160801b90046001600160401b03166000908152607f602052604090205550565b6001600160a01b0382166000908152607b6020526040812054906146a78383615a0c565b6001600160a01b0385166000908152607b60205260408120829055607c805492935085929091906146d9908490615a0c565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae291016134c0565b6001600160a01b03811660009081526079602052604090206001810154600160c01b900460ff1661477f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610edb565b600180820154607880546001600160401b039092169290916147a1919061596c565b815481106147b1576147b1615537565b600091825260209091200154607880546001600160a01b03909216916001600160401b0384169081106147e6576147e6615537565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080607960006078846001600160401b03168154811061483557614835615537565b6000918252602080832091909101546001600160a01b031683528201929092526040019020600101805467ffffffffffffffff19166001600160401b0392909216919091179055607880548061488d5761488d615a24565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03949094168152607990935250506040812090815560010180546001600160c81b0319169055565b6148eb81613f6c565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b60606143f38383604051806060016040528060278152602001615af060279139614aef565b8051805160209182015192820151805190830151604080516c23b637b130b61039ba30ba329d60991b81870152602d810194909452604d8401959095526001600160c01b031960c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b600054610100900460ff166149e25760405162461bcd60e51b8152600401610edb906159c1565b6033805460ff19169055565b6149f7816141c4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60408051600280825260608201835260009283929190602083019080368337019050508551909150614a7090614a6b8660005b6020020151614947565b614bcc565b81600081518110614a8357614a83615537565b6020908102919091010152614aa48560016020020151614a6b866001614a61565b81600181518110614ab757614ab7615537565b602002602001018181525050613f636000846001600160401b031683614cf0565b805160009081614295565b80516000906001614295565b60606001600160a01b0384163b614b575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610edb565b600080856001600160a01b031685604051614b729190615656565b600060405180830381855af49150503d8060008114614bad576040519150601f19603f3d011682016040523d82523d6000602084013e614bb2565b606091505b5091509150614bc2828286614d07565b9695505050505050565b60006001836003811115614be257614be261554d565b1415614c28576040516b213637b1b59039ba30ba329d60a11b6020820152602c8101839052604c015b60405160208183030381529060405280519060200120905061282b565b6002836003811115614c3c57614c3c61554d565b1415614c725760405174213637b1b59039ba30ba32961032b93937b932b21d60591b602082015260358101839052605501614c0b565b6003836003811115614c8657614c8661554d565b1415614cb55760405174213637b1b59039ba30ba3296103a37b7903330b91d60591b6020820152603501614c0b565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b6044820152606401610edb565b60008383836040516020016143da93929190615a3a565b60608315614d165750816143f3565b825115614d265782518084602001fd5b8160405162461bcd60e51b8152600401610edb9190615a7c565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b6040518060400160405280614db7614e1a565b8152602001614dc4614e1a565b905290565b60405180610100016040528060008152602001614de4614d40565b815260006020820152604001614df8614d40565b8152600060208201819052604082018190526060820181905260809091015290565b60405180604001604052806002906020820280368337509192915050565b60405180604001604052806002905b614e4f614da4565b815260200190600190039081614e475790505090565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461118e57600080fd5b600060208284031215614ea057600080fd5b81356143f381614e79565b600060208284031215614ebd57600080fd5b5035919050565b600080828403610160811215614ed957600080fd5b83356001600160401b03811115614eef57600080fd5b84016101c08187031215614f0257600080fd5b9250610140601f1982011215614f1757600080fd5b506020830190509250929050565b80356001600160401b0381168114612c1f57600080fd5b600080600060608486031215614f5157600080fd5b614f5a84614f25565b95602085013595506040909401359392505050565b60006101608284031215614f8257600080fd5b50919050565b6000806000806101c08587031215614f9f57600080fd5b614fa885614f25565b935060208501359250614fbe8660408701614f6f565b939692955092936101a00135925050565b801515811461118e57600080fd5b60008060408385031215614ff057600080fd5b8235614ffb81614e79565b9150602083013561500b81614fcf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561504e5761504e615016565b60405290565b604051601f8201601f191681016001600160401b038111828210171561507c5761507c615016565b604052919050565b6000806040838503121561509757600080fd5b82356150a281614e79565b91506020838101356001600160401b03808211156150bf57600080fd5b818601915086601f8301126150d357600080fd5b8135818111156150e5576150e5615016565b6150f7601f8201601f19168501615054565b9150808252878482850101111561510d57600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561513d57600080fd5b6143f382614f25565b6000610160828403121561515957600080fd5b6143f38383614f6f565b60008083601f84011261517557600080fd5b5081356001600160401b0381111561518c57600080fd5b6020830191508360208260051b85010111156151a757600080fd5b9250929050565b600080602083850312156151c157600080fd5b82356001600160401b038111156151d757600080fd5b6151e385828601615163565b90969095509350505050565b6000806040838503121561520257600080fd5b823561520d81614e79565b9150602083013561500b81614e79565b600061018082019050825182526020830151602083015260408301516040830152606083015161525860608401826001600160401b03169052565b50608083015161527360808401826001600160401b03169052565b5060a083015161528e60a08401826001600160401b03169052565b5060c08301516152a960c08401826001600160401b03169052565b5060e08301516152c460e08401826001600160401b03169052565b50610100838101516001600160401b038116848301525050610120838101516001600160401b038116848301525050610140838101516001600160401b03811684830152505061016092830151919092015290565b60006020828403121561532b57600080fd5b81356143f381614fcf565b6000806000806040858703121561534c57600080fd5b84356001600160401b038082111561536357600080fd5b61536f88838901615163565b9096509450602087013591508082111561538857600080fd5b5061539587828801615163565b95989497509550505050565b600080604083850312156153b457600080fd5b61520d83614f25565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6000602082840312156153fd57600080fd5b81516143f381614fcf565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039290921682521515602082015260400190565b6000808335601e198436030181126154d257600080fd5b8301803591506001600160401b038211156154ec57600080fd5b6020019150368190038213156151a757600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b803560048110612c1f57600080fd5b60006020828403121561558457600080fd5b6143f382615563565b6020808252600b908201526a454d5054595f415252415960a81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156155dc576155dc6155b2565b5060010190565b6020808252600c908201526b0aea49e9c8ebe988a9c8ea8960a31b604082015260600190565b6020808252600790820152664e4f5f4e4f444560c81b604082015260600190565b60005b8381101561564557818101518382015260200161562d565b8381111561404c5750506000910152565b6000825161566881846020870161562a565b9190910192915050565b60006020828403121561568457600080fd5b5051919050565b60006001600160401b038083168185168083038211156156ad576156ad6155b2565b01949350505050565b6000608082840312156156c857600080fd5b6156d061502c565b905082601f8301126156e157600080fd5b6156e961502c565b8060408401858111156156fb57600080fd5b845b818110156157155780358452602093840193016156fd565b5081845285605f86011261572857600080fd5b61573061502c565b9250829150608085018681111561574657600080fd5b8082101561576a5761575782614f25565b8452602084019350602082019150615746565b505060208301525092915050565b60006080828403121561578a57600080fd5b6143f383836156b6565b60006001600160401b03808316818114156157b1576157b16155b2565b6001019392505050565b60006001600160401b03838116908316818110156157db576157db6155b2565b039392505050565b600060a082840312156157f557600080fd5b6157fd61502c565b905061580983836156b6565b815261581760808301615563565b602082015292915050565b6000610160828403121561583557600080fd5b604051606081018181106001600160401b038211171561585757615857615016565b60405261586484846157e3565b81526158738460a085016157e3565b60208201526158856101408401614f25565b60408201529392505050565b604081833760006040838101828152908301915b60028110156158d4576001600160401b036158bf84614f25565b168252602092830192909101906001016158a5565b5050506158e360808201615563565b6004811061590157634e487b7160e01b600052602160045260246000fd5b806080840152505050565b8581526101e081016159216020830187615891565b61593160c0830160a08801615891565b6001600160401b036159466101408801614f25565b1661016083015284610180830152836101a0830152826101c08301529695505050505050565b60008282101561597e5761597e6155b2565b500390565b8381528260208201526000600483106159ac57634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115615a1f57615a1f6155b2565b500190565b634e487b7160e01b600052603160045260246000fd5b83815260006020848184015260408301845182860160005b82811015615a6e57815184529284019290840190600101615a52565b509198975050505050505050565b6020815260008251806020840152615a9b81604085016020870161562a565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122002cdec807b81ea3123ef953761f44c4c47f8b0a656c18a9227449c42242e234c64736f6c63430008090033",
|
1831
|
-
"deployedBytecode": "0x6080604052600436106103b65760003560e01c80637b83a3fe116101f9578063bc45e0ae1161011e578063ee35f327116100b6578063f63a434a1161007a578063f63a434a14610e09578063facd743b14610e29578063fb0e722b14610e59578063fc8ffa0314610e79578063ff204f3b14610e9957600080fd5b8063ee35f32714610d53578063ef40a67014610d73578063f065de3f14610da9578063f33e1fac14610dc9578063f38c937914610de957600080fd5b8063bc45e0ae14610bc4578063ce11e6ab14610be4578063ce66d05c14610c04578063d01e660214610c24578063d735e21d14610c44578063dcd030aa14610c69578063dff6978714610c89578063e78cea9214610c9e578063e8bd492214610cbe57600080fd5b806392c8134c1161019157806392c8134c146109bf578063948d6588146109ec5780639846129a14610a0c5780639a8a059214610a1f578063a23c44b114610a35578063a2b4f1d814610b44578063a3ffb77214610b64578063aa38a6e714610b84578063aa65af4814610ba457600080fd5b80637b83a3fe146108ba5780637ba9534a146108da5780637c75c298146108ef5780638456cb591461090f578063848bf918146109245780638640ce5f1461094457806389384960146109695780638ee1a1261461098957806391c657e81461099f57600080fd5b806347fb24c5116102df5780636136fe2e116102775780636136fe2e146107685780636177fd181461078857806363721d6b146107cb57806365f7f80d146107e057806369fd251c146107fe5780636ddd37441461084757806371ef232c1461086757806376e7e23b1461087d578063771b2f971461089357600080fd5b806347fb24c5146106635780634f1ef286146106835780634f61f8501461069657806351ed6a30146106b657806352d1902d146106d657806353b60c4a146106eb57806355840a581461070b578063567ca41b146107305780635c975abb1461075057600080fd5b80631b1689e9116103525780631b1689e9146104f257806328ff127a146105165780632e7acfa6146105365780632f30cabd1461056e5780632f7968e8146105a45780633659cfe6146105c45780633e96576e146105e457806345e38b641461062d578063470dce4e1461064357600080fd5b8063014cc92c146103bb578063023a96fe146103f15780630397d45814610411578063046f7da21461043357806306ae5851146104485780630d40a0fd146104685780630d561b371461048857806312ab3d3b146104a857806313af4035146104d2575b600080fd5b3480156103c757600080fd5b50606f546103db906001600160a01b031681565b6040516103e89190614e65565b60405180910390f35b3480156103fd57600080fd5b50606e546103db906001600160a01b031681565b34801561041d57600080fd5b5061043161042c366004614e8e565b610eb9565b005b34801561043f57600080fd5b5061043161108b565b34801561045457600080fd5b50610431610463366004614eab565b6110af565b34801561047457600080fd5b50610431610483366004614e8e565b6110d1565b34801561049457600080fd5b506104316104a3366004614e8e565b611191565b3480156104b457600080fd5b50607e546104c29060ff1681565b60405190151581526020016103e8565b3480156104de57600080fd5b506104316104ed366004614e8e565b6111ce565b3480156104fe57600080fd5b50610508607d5481565b6040519081526020016103e8565b34801561052257600080fd5b50610431610531366004614ec4565b6111f4565b34801561054257600080fd5b50606554610556906001600160401b031681565b6040516001600160401b0390911681526020016103e8565b34801561057a57600080fd5b50610508610589366004614e8e565b6001600160a01b03166000908152607b602052604090205490565b3480156105b057600080fd5b506104316105bf366004614f3c565b611a05565b3480156105d057600080fd5b506104316105df366004614e8e565b611a51565b3480156105f057600080fd5b506105566105ff366004614e8e565b6001600160a01b0316600090815260796020526040902060010154600160401b90046001600160401b031690565b34801561063957600080fd5b5061050860735481565b34801561064f57600080fd5b5061043161065e366004614f88565b611b0e565b34801561066f57600080fd5b5061043161067e366004614fdd565b611bb2565b610431610691366004615084565b611c34565b3480156106a257600080fd5b506104316106b1366004614e8e565b611ce5565b3480156106c257600080fd5b506072546103db906001600160a01b031681565b3480156106e257600080fd5b50610508611d64565b3480156106f757600080fd5b50610431610706366004614e8e565b611e12565b34801561071757600080fd5b50607e546103db9061010090046001600160a01b031681565b34801561073c57600080fd5b5061043161074b366004614e8e565b611e4a565b34801561075c57600080fd5b5060335460ff166104c2565b34801561077457600080fd5b5061043161078336600461512b565b611f17565b34801561079457600080fd5b506104c26107a3366004614e8e565b6001600160a01b0316600090815260796020526040902060010154600160c01b900460ff1690565b3480156107d757600080fd5b50607a54610508565b3480156107ec57600080fd5b506075546001600160401b0316610556565b34801561080a57600080fd5b50610556610819366004614e8e565b6001600160a01b0316600090815260796020526040902060010154600160801b90046001600160401b031690565b34801561085357600080fd5b506103db61086236600461512b565b611f59565b34801561087357600080fd5b50610508607c5481565b34801561088957600080fd5b5061050860675481565b34801561089f57600080fd5b5060655461055690600160401b90046001600160401b031681565b3480156108c657600080fd5b506104316108d5366004615146565b611f92565b3480156108e657600080fd5b50610556612295565b3480156108fb57600080fd5b5061043161090a3660046151ae565b6122ab565b34801561091b57600080fd5b5061043161241f565b34801561093057600080fd5b5061043161093f3660046151ef565b612443565b34801561095057600080fd5b50607554600160c01b90046001600160401b0316610556565b34801561097557600080fd5b50610431610984366004614eab565b6124bf565b34801561099557600080fd5b5061050860685481565b3480156109ab57600080fd5b506104c26109ba366004614e8e565b6124e1565b3480156109cb57600080fd5b506109df6109da36600461512b565b612545565b6040516103e8919061521d565b3480156109f857600080fd5b50610431610a07366004614eab565b61260c565b610431610a1a366004615084565b61262e565b348015610a2b57600080fd5b5061050860665481565b348015610a4157600080fd5b50610aef610a50366004614e8e565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b0316600090815260796020908152604091829020825160a081018452815481526001909101546001600160401b0380821693830193909352600160401b8104831693820193909352600160801b83049091166060820152600160c01b90910460ff161515608082015290565b6040516103e89190600060a0820190508251825260208301516001600160401b038082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b348015610b5057600080fd5b50610431610b5f366004615319565b6126db565b348015610b7057600080fd5b50610431610b7f366004615336565b612706565b348015610b9057600080fd5b50606d546103db906001600160a01b031681565b348015610bb057600080fd5b506104c2610bbf3660046153a1565b6127fa565b348015610bd057600080fd5b506070546103db906001600160a01b031681565b348015610bf057600080fd5b50606b546103db906001600160a01b031681565b348015610c1057600080fd5b50610431610c1f36600461512b565b612831565b348015610c3057600080fd5b506103db610c3f366004614eab565b6128bc565b348015610c5057600080fd5b50607554600160401b90046001600160401b0316610556565b348015610c7557600080fd5b506104c2610c84366004614e8e565b6128d1565b348015610c9557600080fd5b50607854610556565b348015610caa57600080fd5b50606a546103db906001600160a01b031681565b348015610cca57600080fd5b50610d1b610cd9366004614e8e565b607960205260009081526040902080546001909101546001600160401b0380821691600160401b8104821691600160801b82041690600160c01b900460ff1685565b604080519586526001600160401b0394851660208701529284169285019290925290911660608301521515608082015260a0016103e8565b348015610d5f57600080fd5b50606c546103db906001600160a01b031681565b348015610d7f57600080fd5b50610508610d8e366004614e8e565b6001600160a01b031660009081526079602052604090205490565b348015610db557600080fd5b506071546103db906001600160a01b031681565b348015610dd557600080fd5b50610556610de4366004614eab565b612914565b348015610df557600080fd5b50610431610e04366004615336565b61294b565b348015610e1557600080fd5b50610508610e2436600461512b565b612b5b565b348015610e3557600080fd5b506104c2610e44366004614e8e565b60746020526000908152604090205460ff1681565b348015610e6557600080fd5b506069546103db906001600160a01b031681565b348015610e8557600080fd5b50610431610e94366004614e8e565b612c24565b348015610ea557600080fd5b50610431610eb4366004614e8e565b612cb6565b60335460ff16610ee45760405162461bcd60e51b8152600401610edb906153bd565b60405180910390fd5b6000806001600160a01b0316826001600160a01b0316141590506000306001600160a01b031663cd205fda6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3957600080fd5b505afa158015610f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7191906153eb565b905081151581151514610fbe5760405162461bcd60e51b81526020600482015260156024820152741393d7d554d15497d313d1d250d7d4d5541413d495605a1b6044820152606401610edb565b6078546001600160401b03161561100b5760405162461bcd60e51b81526020600482015260116024820152704e4f5f4143544956455f5354414b45525360781b6044820152606401610edb565b607c54156110515760405162461bcd60e51b81526020600482015260136024820152724e4f5f50454e44494e475f574954484452415760681b6044820152606401610edb565b607280546001600160a01b0319166001600160a01b038516179055604051600d90600080516020615ad083398151915290600090a2505050565b611093612de6565b604051600490600080516020615ad083398151915290600090a2565b6067819055604051600c90600080516020615ad083398151915290600090a250565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561111a5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661114c612e4c565b6001600160a01b0316146111725760405162461bcd60e51b8152600401610edb90615454565b6040805160008082526020820190925261118e91839190612e6d565b50565b607e8054610100600160a81b0319166101006001600160a01b03841602179055604051601f90600080516020615ad083398151915290600090a250565b6111d78161300d565b604051600790600080516020615ad083398151915290600090a250565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561123d5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661126f612e4c565b6001600160a01b0316146112955760405162461bcd60e51b8152600401610edb90615454565b600054610100900460ff166112b05760005460ff16156112b4565b303b155b6113175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610edb565b600054610100900460ff16158015611339576000805461ffff19166101011790555b43607d5561134a6020830183614e8e565b606a80546001600160a01b0319166001600160a01b039290921691909117905561137a6040830160208401614e8e565b606c80546001600160a01b0319166001600160a01b03929092169190911790556113a76020830183614e8e565b6001600160a01b03166347fb24c56113c56060850160408601614e8e565b60016040518363ffffffff1660e01b81526004016113e49291906154a0565b600060405180830381600087803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50611424925050506020830183614e8e565b6001600160a01b0316634f61f8506114426040850160208601614e8e565b6040518263ffffffff1660e01b815260040161145e9190614e65565b600060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b506114a1925050506060830160408401614e8e565b606980546001600160a01b0319166001600160a01b03929092169190911790556114d16080830160608401614e8e565b606b80546001600160a01b0319166001600160a01b03929092169190911790556114fe6020830183614e8e565b6001600160a01b031663cee3d72861151c6080850160608601614e8e565b60016040518363ffffffff1660e01b815260040161153b9291906154a0565b600060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b5061157e9250505060a0830160808401614e8e565b606d80546001600160a01b0319166001600160a01b03929092169190911790556115ab6020830183614e8e565b6001600160a01b03166347fb24c56115c960a0850160808601614e8e565b60016040518363ffffffff1660e01b81526004016115e89291906154a0565b600060405180830381600087803b15801561160257600080fd5b505af1158015611616573d6000803e3d6000fd5b5061162b9250505060a0830160808401614e8e565b6001600160a01b031663cf8d56d660e085013561164c6101008701876154bb565b6040518463ffffffff1660e01b815260040161166a93929190615501565b600060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b506116ad925050506040830160208401614e8e565b60405163e0bc972960e01b815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b15801561171e57600080fd5b505af1158015611732573d6000803e3d6000fd5b506117499250505061012083016101008401614e8e565b606f80546001600160a01b0319166001600160a01b039290921691909117905561177b61014083016101208401614e8e565b607080546001600160a01b0319166001600160a01b03929092169190911790556117ab60c0830160a08401614e8e565b606e80546001600160a01b0319166001600160a01b039290921691909117905560006117d5613061565b90506117e0816130b4565b6117ed602085018561512b565b6065805467ffffffffffffffff19166001600160401b039290921691909117905561181e604085016020860161512b565b606580546001600160401b0392909216600160401b0267ffffffffffffffff60401b1990921691909117905560e084013560665560608401356067556080840135606855604b60735561186f61334c565b6001600160a01b031661188860e0860160c08701614e8e565b6001600160a01b031614156118d65760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa2a9a1a927abafa0a226a4a760611b6044820152606401610edb565b6118e660c0850160a08601614e8e565b6001600160a01b03166118ff60e0860160c08701614e8e565b6001600160a01b0316141561194d5760405162461bcd60e51b815260206004820152601460248201527324a72b20a624a22fa2a9a1a927abafa7aba722a960611b6044820152606401610edb565b61195d60e0850160c08601614e8e565b607180546001600160a01b0319166001600160a01b039290921691909117905561198d6060850160408601614e8e565b607280546001600160a01b0319166001600160a01b0392909216919091179055604080516080860135815260e086013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a1508015611a00576000805461ff00191690555b505050565b60335460ff16611a275760405162461bcd60e51b8152600401610edb906153bd565b611a32838383613374565b604051601890600080516020615ad083398151915290600090a2505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611a9a5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611acc612e4c565b6001600160a01b031614611af25760405162461bcd60e51b8152600401610edb90615454565b6040805160008082526020820190925261118e918391906134ce565b60335460ff16611b305760405162461bcd60e51b8152600401610edb906153bd565b6075546001600160401b03858116911614611b855760405162461bcd60e51b815260206004820152601560248201527413d3931657d310551154d517d0d3d3919254935151605a1b6044820152606401610edb565b611b9182858584613648565b50604051601790600080516020615ad083398151915290600090a250505050565b606a546040516347fb24c560e01b81526001600160a01b03909116906347fb24c590611be490859085906004016154a0565b600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b505060405160029250600080516020615ad08339815191529150600090a25050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611c7d5760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611caf612e4c565b6001600160a01b031614611cd55760405162461bcd60e51b8152600401610edb90615454565b611ce1828260016134ce565b5050565b606a546040516304f61f8560e41b81526001600160a01b0390911690634f61f85090611d15908490600401614e65565b600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b5050604051601b9250600080516020615ad08339815191529150600090a250565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dff5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610edb565b50600080516020615ab083398151915290565b606980546001600160a01b0319166001600160a01b038316179055604051601c90600080516020615ad083398151915290600090a250565b606b546001600160a01b0382811691161415611e955760405162461bcd60e51b815260206004820152600a602482015269086aaa4be9eaaa8849eb60b31b6044820152606401610edb565b606a546040516319dc7ae560e31b81526001600160a01b039091169063cee3d72890611ec89084906000906004016154a0565b600060405180830381600087803b158015611ee257600080fd5b505af1158015611ef6573d6000803e3d6000fd5b505060405160019250600080516020615ad08339815191529150600090a250565b6065805467ffffffffffffffff60401b1916600160401b6001600160401b03841602179055604051600a90600080516020615ad083398151915290600090a250565b60006078826001600160401b031681548110611f7757611f77615537565b6000918252602090912001546001600160a01b031692915050565b60335460ff16611fb45760405162461bcd60e51b8152600401610edb906153bd565b60006001611fc0612295565b6001600160401b0316156120105760405162461bcd60e51b81526020600482015260176024820152761393d397d1d1539154d254d7d393d11154d7d1561254d5604a1b6044820152606401610edb565b61201983613c5c565b6120585760405162461bcd60e51b815260206004820152601060248201526f4e4f545f454d5054595f4245464f524560801b6044820152606401610edb565b600161206a60a0850160808601615572565b600381111561207b5761207b61554d565b146120c85760405162461bcd60e51b815260206004820152601b60248201527f4245464f52455f4d414348494e455f4e4f545f46494e495348454400000000006044820152606401610edb565b60c0830135821461210f5760405162461bcd60e51b81526020600482015260116024820152701393d517d6915493d7d4d153911493d3d5607a1b6044820152606401610edb565b6001600160401b03811661212a610100850160e0860161512b565b6001600160401b0316146121735760405162461bcd60e51b815260206004820152601060248201526f494e424f585f4e4f545f41545f4f4e4560801b6044820152606401610edb565b6121856101208401610100850161512b565b6001600160401b0316156121db5760405162461bcd60e51b815260206004820152601c60248201527f504f534954494f4e5f494e5f4d4553534147455f4e4f545f5a45524f000000006044820152606401610edb565b60016121ef61014085016101208601615572565b60038111156122005761220061554d565b1461224d5760405162461bcd60e51b815260206004820152601a60248201527f41465445525f4d414348494e455f4e4f545f46494e49534845440000000000006044820152606401610edb565b60a08301356122688460006001600160401b03851681613648565b5061227560018285613374565b604051601d90600080516020615ad083398151915290600090a250505050565b607554600160801b90046001600160401b031690565b60335460ff166122cd5760405162461bcd60e51b8152600401610edb906153bd565b806122ea5760405162461bcd60e51b8152600401610edb9061558d565b60005b8181101561240057600060798185858581811061230c5761230c615537565b90506020020160208101906123219190614e8e565b6001600160a01b03168152602081019190915260400160002060010154600160801b90046001600160401b03161461238d5760405162461bcd60e51b815260206004820152600f60248201526e14d51052d15497d25397d0d2105313608a1b6044820152606401610edb565b6123be8383838181106123a2576123a2615537565b90506020020160208101906123b79190614e8e565b6000613cb8565b506123ee8383838181106123d4576123d4615537565b90506020020160208101906123e99190614e8e565b613d7d565b806123f8816155c8565b9150506122ed565b50604051601690600080516020615ad083398151915290600090a25050565b612427613e23565b604051600390600080516020615ad083398151915290600090a2565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe69061246f908490600401614e65565b600060405180830381600087803b15801561248957600080fd5b505af115801561249d573d6000803e3d6000fd5b505060405160149250600080516020615ad08339815191529150600090a25050565b6068819055604051601a90600080516020615ad083398151915290600090a250565b6000805b607a5481101561253c57607a818154811061250257612502615537565b6000918252602090912001546001600160a01b038481169116141561252a5750600192915050565b80612534816155c8565b9150506124e5565b50600092915050565b61254d614d40565b6001600160401b03821660009081526076602052604090206040805161018081018252825481526001830154602082015260028301549181019190915260038201546001600160401b038082166060840152600160401b80830482166080850152600160801b808404831660a0860152600160c01b93849004831660c0860152600486015480841660e0870152918204831661010086015281048216610120850152919091041661014082015260059091015461016082015292915050565b6073819055604051600890600080516020615ad083398151915290600090a250565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156126775760405162461bcd60e51b8152600401610edb90615408565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126a9612e4c565b6001600160a01b0316146126cf5760405162461bcd60e51b8152600401610edb90615454565b611ce182826001612e6d565b607e805460ff1916821515179055604051601e90600080516020615ad083398151915290600090a250565b826127235760405162461bcd60e51b8152600401610edb9061558d565b8281146127425760405162461bcd60e51b8152600401610edb906155e3565b60005b838110156127d95782828281811061275f5761275f615537565b90506020020160208101906127749190615319565b6074600087878581811061278a5761278a615537565b905060200201602081019061279f9190614e8e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806127d1816155c8565b915050612745565b50604051600690600080516020615ad083398151915290600090a250505050565b6001600160401b03821660009081526077602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6000816001600160401b0316116128835760405162461bcd60e51b81526020600482015260166024820152751253959053125117d0d3d39192549357d411549253d160521b6044820152606401610edb565b6065805467ffffffffffffffff19166001600160401b038316179055604051600990600080516020615ad083398151915290600090a250565b6000607a8281548110611f7757611f77615537565b6001600160a01b038116600090815260796020526040812060010154600160c01b900460ff16801561282b575060755461282b906001600160401b0316836127fa565b6000607a828154811061292957612929615537565b600091825260209091200154600160a01b90046001600160401b031692915050565b60335460ff1661296d5760405162461bcd60e51b8152600401610edb906153bd565b8261298a5760405162461bcd60e51b8152600401610edb9061558d565b8281146129a95760405162461bcd60e51b8152600401610edb906155e3565b60005b83811015612b3a576000612a0c8686848181106129cb576129cb615537565b90506020020160208101906129e09190614e8e565b8585858181106129f2576129f2615537565b9050602002016020810190612a079190614e8e565b613e9e565b90506001600160401b038116612a535760405162461bcd60e51b815260206004820152600c60248201526b1393d517d25397d0d210531360a21b6044820152606401610edb565b612aab868684818110612a6857612a68615537565b9050602002016020810190612a7d9190614e8e565b6001600160a01b03166000908152607960205260409020600101805467ffffffffffffffff60801b19169055565b612ac0848484818110612a6857612a68615537565b606e546040516356e9df9760e01b81526001600160401b03831660048201526001600160a01b03909116906356e9df9790602401600060405180830381600087803b158015612b0e57600080fd5b505af1158015612b22573d6000803e3d6000fd5b50505050508080612b32906155c8565b9150506129ac565b50604051601590600080516020615ad083398151915290600090a250505050565b60007f000000000000000000000000000000000000000000000000000000000000000015612bb9576001600160401b0382166000908152607f60205260409020548061282b5760405162461bcd60e51b8152600401610edb90615609565b6001600160401b03821660009081526076602052604081206003810154909150600160401b90046001600160401b0316612c055760405162461bcd60e51b8152600401610edb90615609565b60040154600160c01b90046001600160401b031692915050565b919050565b612c2c61334c565b6001600160a01b0316816001600160a01b03161415612c7e5760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f455343524f5760901b6044820152606401610edb565b607180546001600160a01b0319166001600160a01b038316179055604051601990600080516020615ad083398151915290600090a250565b606b80546001600160a01b0319166001600160a01b0383811691909117909155606a546040516319dc7ae560e31b815291169063cee3d72890612d009084906001906004016154a0565b600060405180830381600087803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b505060405160009250600080516020615ad083398151915291508290a250565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491612d8c9190615656565b600060405180830381855afa9150503d8060008114612dc7576040519150601f19603f3d011682016040523d82523d6000602084013e612dcc565b606091505b5091509150818015612ddf575080516020145b9250505090565b60335460ff16612e085760405162461bcd60e51b8152600401610edb906153bd565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051612e429190614e65565b60405180910390a1565b6000600080516020615ab08339815191525b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff1615612ea057611a0083613f6c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ed957600080fd5b505afa925050508015612f09575060408051601f3d908101601f19168201909252612f0691810190615672565b60015b612f765760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d604482015277706c656d656e746174696f6e206973206e6f74205555505360401b6064820152608401610edb565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146130015760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f6044820152721b99185c9e481c1c9bde1a58589b1955555251606a1b6064820152608401610edb565b50611a00838383614027565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61303661334c565b604080516001600160a01b03928316815291841660208301520160405180910390a161118e81614052565b613069614d40565b613071614da4565b60006130a360405180604001604052808481526020016001600381111561309a5761309a61554d565b905260016140de565b9050612ddf81600080804381614123565b6130bc614177565b60008080526076602090815282517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a181958558201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a1819595560408201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195a5560608201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195b8054608085015160a086015160c08701516001600160401b039586166001600160801b031994851617600160401b9387168402176001600160801b03908116600160801b93881684026001600160c01b0390811691909117600160c01b93891684021790965560e08901517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195c80546101008c01516101208d01516101408e0151948c169290991691909117908a169096029590951790911694871690920290941692909217919093169091021790556101608201517fafbc767fed27552cbeceb3d11150dacedabc53b0cc52ac5aa6285a747a18195d5561326090600161568b565b607560086101000a8154816001600160401b0302191690836001600160401b031602179055507f00000000000000000000000000000000000000000000000000000000000000001561118e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132e657600080fd5b505afa1580156132fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331e9190615672565b60008052607f6020527f18b3a2798575d3a428c1f52e616a74b071539854e037e7d7c535365d474f40335550565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103612e5e565b6001600160401b038316600090815260766020526040902061339683836141a8565b8160020154146133d75760405162461bcd60e51b815260206004820152600c60248201526b434f4e4649524d5f4441544160a01b6044820152606401610edb565b606b54604051630502677360e51b815260048101849052602481018590526001600160a01b039091169063a04cee6090604401600060405180830381600087803b15801561342457600080fd5b505af1158015613438573d6000803e3d6000fd5b50506075805467ffffffffffffffff19166001600160401b03881617905550613464905084600161568b565b6075805467ffffffffffffffff60401b1916600160401b6001600160401b03938416021790556040805185815260208101859052918616917f22ef0479a7ff660660d1c2fe35f1b632cf31675c2d9378db8cec95b00d8ffa3c91015b60405180910390a250505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561350157611a00836141c4565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561353a57600080fd5b505afa92505050801561356a575060408051601f3d908101601f1916820190925261356791810190615672565b60015b6135cd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610edb565b600080516020615ab0833981519152811461363c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610edb565b50611a00838383614246565b6000600161365e61014087016101208801615572565b600381111561366f5761366f61554d565b148061369d5750600261368a61014087016101208801615572565b600381111561369b5761369b61554d565b145b6136dc5760405162461bcd60e51b815260206004820152601060248201526f4241445f41465445525f53544154555360801b6044820152606401610edb565b6136e4614dc9565b6136ed85612545565b6060820152606a54604080516221048360e21b815290516001600160a01b03909216916284120c91600480820192602092909190829003018186803b15801561373557600080fd5b505afa158015613749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376d9190615672565b815260608101515161377f878661424f565b146137be5760405162461bcd60e51b815260206004820152600f60248201526e0a0a48aacbea6a882a88abe9082a69608b1b6044820152606401610edb565b60006137da6137d536899003890160a08a01615778565b61428b565b905060006137f06137d5368a90038a018a615778565b9050806001600160401b0316826001600160401b031610156138465760405162461bcd60e51b815260206004820152600f60248201526e494e424f585f4241434b574152445360881b6044820152606401610edb565b806001600160401b0316826001600160401b031614156138ec57613877613872368a90038a018a615778565b6142a0565b6001600160401b0316613895613872368b90038b0160a08c01615778565b6001600160401b031610156138ec5760405162461bcd60e51b815260206004820152601a60248201527f494e424f585f504f535f494e5f4d53475f4241434b57415244530000000000006044820152606401610edb565b60026139006101408a016101208b01615572565b60038111156139115761391161554d565b148061393a5750600061392f613872368b90038b0160a08c01615778565b6001600160401b0316115b1561394d578161394981615794565b9250505b82516001600160401b03831611156139985760405162461bcd60e51b815260206004820152600e60248201526d12539093d617d41054d517d1539160921b6044820152606401610edb565b6001600160401b03821615613a4057606a546001600160a01b03166316bf55796139c36001856157bb565b6040516001600160e01b031960e084901b1681526001600160401b03909116600482015260240160206040518083038186803b158015613a0257600080fd5b505afa158015613a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3a9190615672565b60e08401525b50613a5a9050613a5536889003880188615822565b6142af565b6040820152606554613a75906001600160401b03164361568b565b6001600160401b0390811660c0830152606082015161012001511615801560a0830152613acb57606081015161012001516001600160401b03166000908152607660205260409020600501546080820152613adb565b6060810151610160015160808201525b613afa8160a00151826080015183604001518460e0015160685461434e565b915082821480613b08575082155b613b4b5760405162461bcd60e51b81526020600482015260146024820152730aa9c8ab0a08a86a88a88be9c9e888abe9082a6960631b6044820152606401610edb565b613b93613b5f8760a001836000015161424f565b613b708360400151436068546143bb565b613b87613b82368b90038b018b615822565b6143fa565b888560c0015187614123565b60208201526000613ba2612295565b613bad90600161568b565b90506000613bcf876001600160401b0316600090815260766020526040902090565b9050613bdb8183614424565b613be88360200151614495565b50508181606001516101600151613bfd612295565b6001600160401b03167f4f4caa9e67fb994e349dd35d1ad0ce23053d4323f83ce11dc817b5435031d09684604001518a8660e001516068548860000151604051613c4b95949392919061590c565b60405180910390a450949350505050565b60008135158015613c6f57506020820135155b8015613c915750613c86606083016040840161512b565b6001600160401b0316155b801561282b5750613ca8608083016060840161512b565b6001600160401b03161592915050565b6001600160a01b0382166000908152607960205260408120805480841115613d155760405162461bcd60e51b815260206004820152601060248201526f544f4f5f4c4954544c455f5354414b4560801b6044820152606401610edb565b6000613d21858361596c565b8584559050613d308682614683565b60408051838152602081018790526001600160a01b038816917febd093d389ab57f3566918d2c379a2b4d9539e8eb95efad9d5e465457833fde6910160405180910390a295945050505050565b6001600160a01b03808216600081815260796020908152604080832081518083019092529381526001808501546001600160401b03600160401b9091048116938301938452607a8054928301815590945290517ff0440771a29e57e18c66727944770b82cc77924aef333c927ce6bdd2cdb3ae0390910180549251909316600160a01b026001600160e01b031990921694169390931792909217909155611ce18261471f565b60335460ff1615613e695760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610edb565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e353390565b6001600160a01b03828116600090815260796020526040808220928416825281206001830154919291600160801b90046001600160401b031680613f0e5760405162461bcd60e51b81526020600482015260076024820152661393d7d0d2105360ca1b6044820152606401610edb565b60018201546001600160401b03828116600160801b9092041614613f635760405162461bcd60e51b815260206004820152600c60248201526b1112519197d25397d0d2105360a21b6044820152606401610edb565b95945050505050565b6001600160a01b0381163b613fe35760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e74604482015276185d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd604a1b6064820152608401610edb565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b614030836148e2565b60008251118061403d5750805b15611a005761404c8383614922565b50505050565b6001600160a01b0381166140b75760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610edb565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103614006565b60006140ed8360000151614947565b82846020015160405160200161410593929190615983565b60405160208183030381529060405280519060200120905092915050565b61412b614d40565b614133614d40565b96875250602086019490945260408501929092526001600160401b0390811660608501529081166080840181905260a0840152431661014083015261016082015290565b600054610100900460ff1661419e5760405162461bcd60e51b8152600401610edb906159c1565b6141a66149bb565b565b6040805160208101849052908101829052600090606001614105565b6001600160a01b0381163b6142315760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610edb565b80600080516020615ab0833981519152614006565b614030836149ee565b600061426861426336859003850185615778565b614947565b8261427960a0860160808701615572565b60405160200161410593929190615983565b6020810151600090815b602002015192915050565b60208101516000906001614295565b60006142b9614e1a565b825160200151819060038111156142d2576142d261554d565b908160038111156142e5576142e561554d565b9052506020838101518101519082019060038111156143065761430661554d565b908160038111156143195761431961554d565b905250614324614e38565b8351518152602080850151519082015260408401516143469083908390614a2e565b949350505050565b6000808661435d576000614360565b60015b6040516001600160f81b031960f883901b1660208201526021810188905260418101879052606181018690526081810185905290915060a1016040516020818303038152906040528051906020012091505095945050505050565b6040805160208101859052908101839052606081018290526000906080015b6040516020818303038152906040528051906020012090505b9392505050565b600061282b614410836020015160000151614ad8565b60208401515161441f90614ae3565b6141a8565b6004820154600160401b90046001600160401b03166144655760048201805467ffffffffffffffff60401b1916600160401b436001600160401b0316021790555b600490910180546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b60758054600160801b90046001600160401b03169060106144b583615794565b825461010092830a6001600160401b03818102199092169282160291909117909255607554600160801b908190048316600090815260766020908152604091829020875181559087015160018201559086015160028201556060860151600382018054608089015160a08a015160c08b01519489166001600160801b031993841617600160401b928a168302176001600160801b03908116918a1688026001600160c01b0390811692909217600160c01b968b1687021790945560e08b0151600487018054998d01516101208e01516101408f0151938d169b9096169a909a17998b16909302989098179093169188169095029091161793909416909302919091179055610160830151600590910155507f00000000000000000000000000000000000000000000000000000000000000001561118e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561462657600080fd5b505afa15801561463a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465e9190615672565b607554600160801b90046001600160401b03166000908152607f602052604090205550565b6001600160a01b0382166000908152607b6020526040812054906146a78383615a0c565b6001600160a01b0385166000908152607b60205260408120829055607c805492935085929091906146d9908490615a0c565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae291016134c0565b6001600160a01b03811660009081526079602052604090206001810154600160c01b900460ff1661477f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610edb565b600180820154607880546001600160401b039092169290916147a1919061596c565b815481106147b1576147b1615537565b600091825260209091200154607880546001600160a01b03909216916001600160401b0384169081106147e6576147e6615537565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080607960006078846001600160401b03168154811061483557614835615537565b6000918252602080832091909101546001600160a01b031683528201929092526040019020600101805467ffffffffffffffff19166001600160401b0392909216919091179055607880548061488d5761488d615a24565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03949094168152607990935250506040812090815560010180546001600160c81b0319169055565b6148eb81613f6c565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b60606143f38383604051806060016040528060278152602001615af060279139614aef565b8051805160209182015192820151805190830151604080516c23b637b130b61039ba30ba329d60991b81870152602d810194909452604d8401959095526001600160c01b031960c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b600054610100900460ff166149e25760405162461bcd60e51b8152600401610edb906159c1565b6033805460ff19169055565b6149f7816141c4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60408051600280825260608201835260009283929190602083019080368337019050508551909150614a7090614a6b8660005b6020020151614947565b614bcc565b81600081518110614a8357614a83615537565b6020908102919091010152614aa48560016020020151614a6b866001614a61565b81600181518110614ab757614ab7615537565b602002602001018181525050613f636000846001600160401b031683614cf0565b805160009081614295565b80516000906001614295565b60606001600160a01b0384163b614b575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610edb565b600080856001600160a01b031685604051614b729190615656565b600060405180830381855af49150503d8060008114614bad576040519150601f19603f3d011682016040523d82523d6000602084013e614bb2565b606091505b5091509150614bc2828286614d07565b9695505050505050565b60006001836003811115614be257614be261554d565b1415614c28576040516b213637b1b59039ba30ba329d60a11b6020820152602c8101839052604c015b60405160208183030381529060405280519060200120905061282b565b6002836003811115614c3c57614c3c61554d565b1415614c725760405174213637b1b59039ba30ba32961032b93937b932b21d60591b602082015260358101839052605501614c0b565b6003836003811115614c8657614c8661554d565b1415614cb55760405174213637b1b59039ba30ba3296103a37b7903330b91d60591b6020820152603501614c0b565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b6044820152606401610edb565b60008383836040516020016143da93929190615a3a565b60608315614d165750816143f3565b825115614d265782518084602001fd5b8160405162461bcd60e51b8152600401610edb9190615a7c565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915290565b6040518060400160405280614db7614e1a565b8152602001614dc4614e1a565b905290565b60405180610100016040528060008152602001614de4614d40565b815260006020820152604001614df8614d40565b8152600060208201819052604082018190526060820181905260809091015290565b60405180604001604052806002906020820280368337509192915050565b60405180604001604052806002905b614e4f614da4565b815260200190600190039081614e475790505090565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461118e57600080fd5b600060208284031215614ea057600080fd5b81356143f381614e79565b600060208284031215614ebd57600080fd5b5035919050565b600080828403610160811215614ed957600080fd5b83356001600160401b03811115614eef57600080fd5b84016101c08187031215614f0257600080fd5b9250610140601f1982011215614f1757600080fd5b506020830190509250929050565b80356001600160401b0381168114612c1f57600080fd5b600080600060608486031215614f5157600080fd5b614f5a84614f25565b95602085013595506040909401359392505050565b60006101608284031215614f8257600080fd5b50919050565b6000806000806101c08587031215614f9f57600080fd5b614fa885614f25565b935060208501359250614fbe8660408701614f6f565b939692955092936101a00135925050565b801515811461118e57600080fd5b60008060408385031215614ff057600080fd5b8235614ffb81614e79565b9150602083013561500b81614fcf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561504e5761504e615016565b60405290565b604051601f8201601f191681016001600160401b038111828210171561507c5761507c615016565b604052919050565b6000806040838503121561509757600080fd5b82356150a281614e79565b91506020838101356001600160401b03808211156150bf57600080fd5b818601915086601f8301126150d357600080fd5b8135818111156150e5576150e5615016565b6150f7601f8201601f19168501615054565b9150808252878482850101111561510d57600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561513d57600080fd5b6143f382614f25565b6000610160828403121561515957600080fd5b6143f38383614f6f565b60008083601f84011261517557600080fd5b5081356001600160401b0381111561518c57600080fd5b6020830191508360208260051b85010111156151a757600080fd5b9250929050565b600080602083850312156151c157600080fd5b82356001600160401b038111156151d757600080fd5b6151e385828601615163565b90969095509350505050565b6000806040838503121561520257600080fd5b823561520d81614e79565b9150602083013561500b81614e79565b600061018082019050825182526020830151602083015260408301516040830152606083015161525860608401826001600160401b03169052565b50608083015161527360808401826001600160401b03169052565b5060a083015161528e60a08401826001600160401b03169052565b5060c08301516152a960c08401826001600160401b03169052565b5060e08301516152c460e08401826001600160401b03169052565b50610100838101516001600160401b038116848301525050610120838101516001600160401b038116848301525050610140838101516001600160401b03811684830152505061016092830151919092015290565b60006020828403121561532b57600080fd5b81356143f381614fcf565b6000806000806040858703121561534c57600080fd5b84356001600160401b038082111561536357600080fd5b61536f88838901615163565b9096509450602087013591508082111561538857600080fd5b5061539587828801615163565b95989497509550505050565b600080604083850312156153b457600080fd5b61520d83614f25565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6000602082840312156153fd57600080fd5b81516143f381614fcf565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039290921682521515602082015260400190565b6000808335601e198436030181126154d257600080fd5b8301803591506001600160401b038211156154ec57600080fd5b6020019150368190038213156151a757600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b803560048110612c1f57600080fd5b60006020828403121561558457600080fd5b6143f382615563565b6020808252600b908201526a454d5054595f415252415960a81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156155dc576155dc6155b2565b5060010190565b6020808252600c908201526b0aea49e9c8ebe988a9c8ea8960a31b604082015260600190565b6020808252600790820152664e4f5f4e4f444560c81b604082015260600190565b60005b8381101561564557818101518382015260200161562d565b8381111561404c5750506000910152565b6000825161566881846020870161562a565b9190910192915050565b60006020828403121561568457600080fd5b5051919050565b60006001600160401b038083168185168083038211156156ad576156ad6155b2565b01949350505050565b6000608082840312156156c857600080fd5b6156d061502c565b905082601f8301126156e157600080fd5b6156e961502c565b8060408401858111156156fb57600080fd5b845b818110156157155780358452602093840193016156fd565b5081845285605f86011261572857600080fd5b61573061502c565b9250829150608085018681111561574657600080fd5b8082101561576a5761575782614f25565b8452602084019350602082019150615746565b505060208301525092915050565b60006080828403121561578a57600080fd5b6143f383836156b6565b60006001600160401b03808316818114156157b1576157b16155b2565b6001019392505050565b60006001600160401b03838116908316818110156157db576157db6155b2565b039392505050565b600060a082840312156157f557600080fd5b6157fd61502c565b905061580983836156b6565b815261581760808301615563565b602082015292915050565b6000610160828403121561583557600080fd5b604051606081018181106001600160401b038211171561585757615857615016565b60405261586484846157e3565b81526158738460a085016157e3565b60208201526158856101408401614f25565b60408201529392505050565b604081833760006040838101828152908301915b60028110156158d4576001600160401b036158bf84614f25565b168252602092830192909101906001016158a5565b5050506158e360808201615563565b6004811061590157634e487b7160e01b600052602160045260246000fd5b806080840152505050565b8581526101e081016159216020830187615891565b61593160c0830160a08801615891565b6001600160401b036159466101408801614f25565b1661016083015284610180830152836101a0830152826101c08301529695505050505050565b60008282101561597e5761597e6155b2565b500390565b8381528260208201526000600483106159ac57634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115615a1f57615a1f6155b2565b500190565b634e487b7160e01b600052603160045260246000fd5b83815260006020848184015260408301845182860160005b82811015615a6e57815184529284019290840190600101615a52565b509198975050505050505050565b6020815260008251806020840152615a9b81604085016020870161562a565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122002cdec807b81ea3123ef953761f44c4c47f8b0a656c18a9227449c42242e234c64736f6c63430008090033",
|
2201
|
+
"bytecode": "0x60c0604052620000196200003660201b6200305f1760201c565b15156080523060a0523480156200002f57600080fd5b5062000104565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620000769190620000d3565b600060405180830381855afa9150503d8060008114620000b3576040519150601f19603f3d011682016040523d82523d6000602084013e620000b8565b606091505b5091509150818015620000cc575080516020145b9250505090565b6000825160005b81811015620000f65760208186018101518583015201620000da565b506000920191825250919050565b60805160a051615e776200017e60003960008181610f970152818161101c015281816113120152818161139701528181611521015281816115a60152818161170c01528181611bee01528181611c7301528181611d690152611dee01526000818161116c01528181612943015261445b0152615e776000f3fe60806040526004361061044a5760003560e01c806376e7e23b11610243578063b7ab4db511610143578063e8bd4922116100bb578063f112cea31161008a578063fb0e722b1161006f578063fb0e722b14610e77578063fc8ffa0314610e97578063ff204f3b14610eb757600080fd5b8063f112cea314610e37578063facd743b14610e5757600080fd5b8063e8bd492214610d23578063ee35f32714610dcc578063ef40a67014610de1578063f065de3f14610e1757600080fd5b8063dff6978711610112578063e531d8c7116100f7578063e531d8c714610cbb578063e6b3082c14610cdb578063e78cea9214610d0357600080fd5b8063dff6978714610c86578063e51019a614610c9b57600080fd5b8063b7ab4db514610c04578063bc45e0ae14610c26578063ce11e6ab14610c46578063ce66d05c14610c6657600080fd5b80639846129a116101d6578063a23c44b1116101a5578063a3ffb7721161018a578063a3ffb77214610ba4578063aa38a6e714610bc4578063b7626e7314610be457600080fd5b8063a23c44b114610a71578063a2b4f1d814610b8457600080fd5b80639846129a14610a085780639a7b455614610a1b5780639a8a059214610a3b5780639e7e6aa714610a5157600080fd5b80638830288411610212578063883028841461098557806389384960146109b25780638ee1a126146109d2578063948d6588146109e857600080fd5b806376e7e23b146108f15780637c75c298146109075780638456cb591461092757806384728cd01461093c57600080fd5b80633be680ea1161034e57806355840a58116102e15780635c975abb116102b057806365f7f80d1161029557806365f7f80d146108a65780636ddd3744146108bb57806371ef232c146108db57600080fd5b80635c975abb1461084b5780636177fd181461086357600080fd5b806355840a58146107c6578063567ca41b146107eb57806356bbc9e61461080b5780635bf038331461082b57600080fd5b80634f61f8501161031d5780634f61f8501461075157806351ed6a301461077157806352d1902d1461079157806353b60c4a146107a657600080fd5b80633be680ea146106cf57806345e38b641461070857806347fb24c51461071e5780634f1ef2861461073e57600080fd5b806313af4035116103e15780632e7acfa6116103b05780633083622811610395578063308362281461067a578063353325e01461069a5780633659cfe6146106af57600080fd5b80632e7acfa6146106235780632f30cabd1461064457600080fd5b806313af40351461058657806313c56ca7146105a65780631b1689e9146105d45780632abdd230146105ea57600080fd5b80630d40a0fd1161041d5780630d40a0fd146104e35780630d561b3714610503578063117155851461052357806312ab3d3b1461055c57600080fd5b8063023a96fe1461044f578063046f7da21461048c57806304972af9146104a357806306ae5851146104c3575b600080fd5b34801561045b57600080fd5b5060695461046f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561049857600080fd5b506104a1610ed7565b005b3480156104af57600080fd5b506104a16104be366004615203565b610ee1565b3480156104cf57600080fd5b506104a16104de36600461523b565b610efb565b3480156104ef57600080fd5b506104a16104fe366004615269565b610f8d565b34801561050f57600080fd5b506104a161051e366004615269565b6110d6565b34801561052f57600080fd5b5061054361053e36600461523b565b611143565b60405167ffffffffffffffff9091168152602001610483565b34801561056857600080fd5b50607b546105769060ff1681565b6040519015158152602001610483565b34801561059257600080fd5b506104a16105a1366004615269565b61115f565b3480156105b257600080fd5b506105c66105c136600461523b565b611168565b604051908152602001610483565b3480156105e057600080fd5b506105c6607a5481565b3480156105f657600080fd5b506105c6610605366004615269565b6001600160a01b031660009081526077602052604090206001015490565b34801561062f57600080fd5b506066546105439067ffffffffffffffff1681565b34801561065057600080fd5b506105c661065f366004615269565b6001600160a01b031660009081526078602052604090205490565b34801561068657600080fd5b5061057661069536600461523b565b6112b0565b3480156106a657600080fd5b506105c66112cc565b3480156106bb57600080fd5b506104a16106ca366004615269565b611308565b3480156106db57600080fd5b506069546105439074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b34801561071457600080fd5b506105c660715481565b34801561072a57600080fd5b506104a1610739366004615294565b61144e565b6104a161074c36600461533d565b611517565b34801561075d57600080fd5b506104a161076c366004615269565b61164d565b34801561077d57600080fd5b5060705461046f906001600160a01b031681565b34801561079d57600080fd5b506105c66116ff565b3480156107b257600080fd5b506104a16107c1366004615269565b6117c4565b3480156107d257600080fd5b50607b5461046f9061010090046001600160a01b031681565b3480156107f757600080fd5b506104a1610806366004615269565b611812565b34801561081757600080fd5b5061054361082636600461523b565b611929565b34801561083757600080fd5b506104a16108463660046153fd565b61194c565b34801561085757600080fd5b5060335460ff16610576565b34801561086f57600080fd5b5061057661087e366004615269565b6001600160a01b0316600090815260776020526040902060020154600160401b900460ff1690565b3480156108b257600080fd5b506074546105c6565b3480156108c757600080fd5b5061046f6108d6366004615455565b611991565b3480156108e757600080fd5b506105c660795481565b3480156108fd57600080fd5b506105c660675481565b34801561091357600080fd5b506104a16109223660046154bc565b6119cb565b34801561093357600080fd5b506104a1611ad0565b34801561094857600080fd5b5061046f610957366004615269565b6001600160a01b03908116600090815260776020526040902060020154690100000000000000000090041690565b34801561099157600080fd5b506109a56109a036600461523b565b611ad8565b6040516104839190615532565b3480156109be57600080fd5b506104a16109cd36600461523b565b611b7a565b3480156109de57600080fd5b506105c660685481565b3480156109f457600080fd5b506104a1610a0336600461523b565b611baf565b6104a1610a1636600461533d565b611be4565b348015610a2757600080fd5b506104a1610a36366004615593565b611d1a565b348015610a4757600080fd5b506105c660655481565b348015610a5d57600080fd5b506104a1610a6c3660046155d7565b611d5f565b348015610a7d57600080fd5b50610b2d610a8c366004615269565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260776020908152604091829020825160a081018452815481526001820154928101929092526002015467ffffffffffffffff81169282019290925260ff600160401b830416151560608201526901000000000000000000909104909116608082015290565b6040516104839190600060a082019050825182526020830151602083015267ffffffffffffffff60408401511660408301526060830151151560608301526001600160a01b03608084015116608083015292915050565b348015610b9057600080fd5b506104a1610b9f36600461562b565b612a6b565b348015610bb057600080fd5b506104a1610bbf366004615648565b612aac565b348015610bd057600080fd5b50606d5461046f906001600160a01b031681565b348015610bf057600080fd5b506104a1610bff366004615269565b612c41565b348015610c1057600080fd5b50610c19612c8f565b60405161048391906156b4565b348015610c3257600080fd5b50606e5461046f906001600160a01b031681565b348015610c5257600080fd5b50606c5461046f906001600160a01b031681565b348015610c7257600080fd5b506104a1610c81366004615455565b612ca0565b348015610c9257600080fd5b50607654610543565b348015610ca757600080fd5b506104a1610cb6366004615701565b612d4a565b348015610cc757600080fd5b50610576610cd636600461523b565b612db7565b348015610ce757600080fd5b5060665461054390600160401b900467ffffffffffffffff1681565b348015610d0f57600080fd5b50606b5461046f906001600160a01b031681565b348015610d2f57600080fd5b50610d8c610d3e366004615269565b60776020526000908152604090208054600182015460029092015490919067ffffffffffffffff811690600160401b810460ff1690690100000000000000000090046001600160a01b031685565b60408051958652602086019490945267ffffffffffffffff9092169284019290925290151560608301526001600160a01b0316608082015260a001610483565b348015610dd857600080fd5b5061046f612de7565b348015610ded57600080fd5b506105c6610dfc366004615269565b6001600160a01b031660009081526077602052604090205490565b348015610e2357600080fd5b50606f5461046f906001600160a01b031681565b348015610e4357600080fd5b506104a1610e52366004615455565b612e6e565b348015610e6357600080fd5b50610576610e72366004615269565b612ede565b348015610e8357600080fd5b50606a5461046f906001600160a01b031681565b348015610ea357600080fd5b506104a1610eb2366004615269565b612eeb565b348015610ec357600080fd5b506104a1610ed2366004615269565b612f8f565b610edf613125565b565b610ef781610eee84613177565b600101546131d8565b5050565b6067548111610f515760405162461bcd60e51b815260206004820152601c60248201527f424153455f5354414b455f4d5553545f42455f494e435245415345440000000060448201526064015b60405180910390fd5b60678190556040518181527f54404e5f5326112dad416747228f2fcd704e702c56bf0673ce7e531108e07c1b906020015b60405180910390a150565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361101a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661104c6132dd565b6001600160a01b0316146110b75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b604080516000808252602082019092526110d391839190613310565b50565b607b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b038416908102919091179091556040519081527fd3ab4cbe1b6f519eb43f09ded17a12e81b811e297063ada2d65dddef5b612c7c90602001610f82565b600061114e82613177565b5467ffffffffffffffff1692915050565b6110d3816134b0565b60007f0000000000000000000000000000000000000000000000000000000000000000156111f2576000828152607c6020526040902054806111ec5760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e00000000000000000000000000000000000000006044820152606401610f48565b92915050565b60006111fd83613177565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b830481161515606083015292935061129392909184916080840191600160c81b900416600281111561126f5761126f6154fe565b6002811115611280576112806154fe565b8152602001600182015481525050613504565b54600160801b900467ffffffffffffffff1692915050565b919050565b60006112bb82613177565b54600160c01b900460ff1692915050565b60006112d6615100565b6040805160608101825282815260016020820152600091810182905290806112ff818481613569565b94505050505090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113955760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113c76132dd565b6001600160a01b0316146114325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b604080516000808252602082019092526110d391839190613582565b606b546040517f47fb24c50000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152909116906347fb24c590604401600060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b5050604080516001600160a01b038616815284151560208201527fce7e7eac3fe4e3d77ad155523b4ddb4446965e38cbc7c8a484bb82dc817637ef93500190505b60405180910390a15050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115d66132dd565b6001600160a01b0316146116415760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b610ef782826001613582565b606b546040517f4f61f8500000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634f61f85090602401600060405180830381600087803b1580156116ad57600080fd5b505af11580156116c1573d6000803e3d6000fd5b50506040516001600160a01b03841681527f82740fc8dc15b355f3eb60cd600d43cd104e6906458cccd4cb51bcd1384c0c3492506020019050610f82565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461179f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610f48565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9cf43f86b7edba7593cadbd304522caa8a94db8ec03e204762b19c6955f2c34590602001610f82565b606c546001600160a01b03908116908216036118705760405162461bcd60e51b815260206004820152600a60248201527f4355525f4f5554424f58000000000000000000000000000000000000000000006044820152606401610f48565b606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600060248301529091169063cee3d72890604401600060405180830381600087803b1580156118d757600080fd5b505af11580156118eb573d6000803e3d6000fd5b50506040516001600160a01b03841681527ffe29ae11ccc2c860bf49dbf67ca96fa1db99cb935b0a7c02e3fad38ea80d6c2592506020019050610f82565b600061193482613177565b54600160401b900467ffffffffffffffff1692915050565b611954613722565b61196084848484613774565b60405184907f0ef6ac64bd6b0fa95ed37aa19a1b16613fb89e2269c92639a9d516a64fea493890600090a250505050565b600060768267ffffffffffffffff16815481106119b0576119b061573f565b6000918252602090912001546001600160a01b031692915050565b6119d3613722565b80611a205760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610f48565b60005b81811015611a9e57611a5a838383818110611a4057611a4061573f565b9050602002016020810190611a559190615269565b613991565b611a8b838383818110611a6f57611a6f61573f565b9050602002016020810190611a849190615269565b6000613a95565b5080611a968161576b565b915050611a23565b507f53e7f63f13f0c1bf266cf49783f9c98757c2adbe729a1358bc92635b2b4d7352828260405161150b9291906157ce565b610edf613b96565b611ae0615125565b611ae982613177565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b909104166002811115611b5457611b546154fe565b6002811115611b6557611b656154fe565b81526020016001820154815250509050919050565b60688190556040518181527f7c4db9e8738aa15b72d17ae77a824047a59f8657e14b5a5a75cb6d08213a1db790602001610f82565b60718190556040518181527f238dc443e1da4236615831e66e5dd5ed97848f0eec72bcb57efa87438fca687390602001610f82565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611c715760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ca36132dd565b6001600160a01b031614611d0e5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b610ef782826001613310565b611d22613722565b611d2d828483613bd3565b505060405181907fe5256bb4fdac498ff91fac1e162648b613c54eae8e784a5e73ca9ffcb0a08a6e90600090a2505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611dec5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e1e6132dd565b6001600160a01b031614611e895760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b600054610100900460ff1615808015611ea95750600054600160ff909116105b80611ec35750303b158015611ec3575060005460ff166001145b611f355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610f48565b6000805460ff191660011790558015611f58576000805461ff0019166101001790555b43607a55611f696020830183615269565b606b80546001600160a01b0319166001600160a01b0392909216919091179055611f966020830183615269565b6001600160a01b03166347fb24c5611fb46060850160408601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b5061203a925050506020830183615269565b6001600160a01b0316634f61f8506120586040850160208601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b506120da925050506060830160408401615269565b606a80546001600160a01b0319166001600160a01b039290921691909117905561210a6080830160608401615269565b606c80546001600160a01b0319166001600160a01b03929092169190911790556121376020830183615269565b6001600160a01b031663cee3d7286121556080850160608601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b1580156121b557600080fd5b505af11580156121c9573d6000803e3d6000fd5b506121de9250505060a0830160808401615269565b606d80546001600160a01b0319166001600160a01b03928316179055606b541663ae60bd1361221360a0850160808601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561226f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229391906157e2565b6123bc576122a46020830183615269565b6001600160a01b03166347fb24c56122c260a0850160808601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561232257600080fd5b505af1158015612336573d6000803e3d6000fd5b5061234b9250505060a0830160808401615269565b6001600160a01b031663cf8d56d660c085013561236b60e08701876157ff565b6040518463ffffffff1660e01b815260040161238993929190615864565b600060405180830381600087803b1580156123a357600080fd5b505af11580156123b7573d6000803e3d6000fd5b505050505b6123cc6040830160208401615269565b6001600160a01b0316637fa3a40e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242d919061589a565b6000036124e7576124446040830160208401615269565b6040517fe0bc972900000000000000000000000000000000000000000000000000000000815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b505050505b6124f961012083016101008401615269565b606e80546001600160a01b0319166001600160a01b039290921691909117905561252960c0830160a08401615269565b606980546001600160a01b0319166001600160a01b03929092169190911790556125566020840184615455565b6066805460c086013560655560408601356067556060860135606855604b60715567ffffffffffffffff929092166fffffffffffffffffffffffffffffffff19909216919091176a03138000000000000000001790556125be61034084016103208501615455565b6069805467ffffffffffffffff9290921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055600061262260c0850160a08601615269565b6001600160a01b0316036126785760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610f48565b61268860c0840160a08501615269565b606f80546001600160a01b0319166001600160a01b03929092169190911790556126b86040840160208501615269565b607080546001600160a01b0319166001600160a01b03929092169190911790556126ea61030084016102e08501615269565b607b80546001600160a01b0392909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055600080806127808161274b612746368a90038a016102008b016159d4565b6144fe565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b90506000606b60009054906101000a90046001600160a01b03166001600160a01b03166284120c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fa919061589a565b9050866102c00135810361281657612813600182615a3b565b90505b60685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529085901b16607c830152805160648184030181526084909201905280519101206000906128ad9060019061452e565b90506128b98184614566565b6128c161515c565b6128d4368a90038a016102008b016159d4565b60408083019190915260685460675460695460665493518a9489947f901c3aee23cf4478825462caaab375c606ab83516060388344f0650340753630946129399489948e948d9493926001600160a01b03169167ffffffffffffffff90911690615adc565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156129da5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ca919061589a565b6000858152607c60205260409020555b6040805160608b0135815260c08b013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a15050505050508015612a66576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b607b805460ff19168215159081179091556040519081527f016436ae56a1958a8efa3965e4839a8a90009e0a225fd19fe89b701c99f3e6e990602001610f82565b82612af95760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610f48565b828114612b485760405162461bcd60e51b815260206004820152600c60248201527f57524f4e475f4c454e47544800000000000000000000000000000000000000006044820152606401610f48565b60005b83811015612bfd57828282818110612b6557612b6561573f565b9050602002016020810190612b7a919061562b565b15612bb757612bb1858583818110612b9457612b9461573f565b9050602002016020810190612ba99190615269565b607290614689565b50612beb565b612be9858583818110612bcc57612bcc61573f565b9050602002016020810190612be19190615269565b60729061469e565b505b80612bf58161576b565b915050612b4b565b507f0d9690f97165f35991ae60d2a97e04aff472c08729722a9236ff1bc8b9ba90c084848484604051612c339493929190615bbb565b60405180910390a150505050565b606980546001600160a01b0319166001600160a01b0383169081179091556040519081527fe86d63ef871123954e3c79261a2ad29d42552412045093f9e7f3ba09a459874290602001610f82565b6060612c9b60726146b3565b905090565b60008167ffffffffffffffff1611612cfa5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f434f4e4649524d5f504552494f44000000000000000000006044820152606401610f48565b6066805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527fa65727a75a71361b541984b5db16e2bd4a6a013f072fe8bb097eafd3844b769790602001610f82565b612d6382612d5d368690038601866159d4565b83613569565b8414612db15760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610f48565b50505050565b60006001612dc483613177565b54600160c81b900460ff166002811115612de057612de06154fe565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015612e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9b9190615c19565b606680547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b67ffffffffffffffff8416908102919091179091556040519081527f43f7dc42145cd896e425c1ba47e44ad7fac3214c8993455b88ea382f68a5ed3390602001610f82565b60006111ec6072836146c0565b6001600160a01b038116612f415760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610f48565b606f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f0b0f78bec1daf434a03f0d26fd75936a5391ef694a7ce32a964a316f40b530dd90602001610f82565b606c80546001600160a01b0319166001600160a01b03838116918217909255606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526004810192909252600160248301529091169063cee3d72890604401600060405180830381600087803b15801561300d57600080fd5b505af1158015613021573d6000803e3d6000fd5b50506040516001600160a01b03841681527f0bff4fc5e4cd8fc762bca2b6ff29e3b73a463474097b3f1e972ed2a167b534a792506020019050610f82565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f2000000000000000000000000000000000000000000000000000000001790529051600091829182916064916130cb9190615c5a565b600060405180830381855afa9150503d8060008114613106576040519150601f19603f3d011682016040523d82523d6000602084013e61310b565b606091505b509150915081801561311e575080516020145b9250505090565b61312d613722565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000816131c65760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610f48565b50600090815260756020526040902090565b61328f823560208401356131f26060860160408701615269565b6132026080870160608801615455565b61321260a0880160808901615455565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b8114610ef75760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610f48565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff161561334357612a66836146e2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561339d575060408051601f3d908101601f1916820190925261339a9181019061589a565b60015b61340f5760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d60448201527f706c656d656e746174696f6e206973206e6f74205555505300000000000000006064820152608401610f48565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146134a45760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f60448201527f6e646172792070726f786961626c6555554944000000000000000000000000006064820152608401610f48565b50612a668383836147a3565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6134d96147c8565b604080516001600160a01b03928316815291841660208301520160405180910390a16110d3816147f0565b60008160800151600281111561351c5761351c6154fe565b036110d35760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610f48565b60006135788461274b856144fe565b90505b9392505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156135b557612a6683614893565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561360f575060408051601f3d908101601f1916820190925261360c9181019061589a565b60015b6136815760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610f48565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146137165760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610f48565b50612a66838383614937565b60335460ff16610edf5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610f48565b600061377f85613177565b905060018154600160c81b900460ff1660028111156137a0576137a06154fe565b146137ed5760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610f48565b61380684613800368690038601866159d4565b84613569565b85146138545760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610f48565b600061386d61386836869003860186615c76565b614940565b9050600061388861388336879003870187615c76565b614952565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156138ef57600080fd5b505af1158015613903573d6000803e3d6000fd5b50505060748890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b038116600090815260776020526040902060020154600160401b900460ff16613a035760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f5354414b4544000000000000000000000000000000000000000000006044820152606401610f48565b6001600160a01b03811660009081526077602052604081206001015460745490919082149080613a3284613177565b5467ffffffffffffffff161190508180613a495750805b612db15760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610f48565b6001600160a01b038083166000908152607760205260408120600281015481549293919269010000000000000000009091049091169080851115613b1b5760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610f48565b6000613b278683615c92565b8685559050613b36838261495e565b826001600160a01b0316876001600160a01b03167fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb88489604051613b84929190918252602082015260400190565b60405180910390a39695505050505050565b613b9e614a03565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861315a3390565b600080613be660408601610eee86613177565b6001613bfa61024087016102208801615ca5565b6002811115613c0b57613c0b6154fe565b1480613c3957506002613c2661024087016102208801615ca5565b6002811115613c3757613c376154fe565b145b613c855760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610f48565b83613ca78635613c9d36899003890160e08a016159d4565b6020890135613569565b14613cf45760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610f48565b6001613d0861018087016101608801615ca5565b6002811115613d1957613d196154fe565b14613d665760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610f48565b6000613d7185613177565b90506000806101a0880160e0890182613d8a8383614a56565b1215613dd85760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610f48565b6000613dfe613ded60e08d0160c08e01615455565b849067ffffffffffffffff16614b63565b90506000811315613e515760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610f48565b6002613e656102408d016102208e01615ca5565b6002811115613e7657613e766154fe565b14158015613e845750600081125b15613ee657600196506000613e998484614a56565b13613ee65760405162461bcd60e51b815260206004820152601360248201527f4f564552464c4f575f5354414e445354494c4c000000000000000000000000006044820152606401610f48565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015613f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6b919061589a565b90506000613f798583614b63565b1315613fc75760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610f48565b80613fd860e08e0160c08f01615455565b67ffffffffffffffff1611156140305760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610f48565b600061404961404436879003870187615c76565b614beb565b67ffffffffffffffff16905081810361406e57614067826001615a3b565b9650614072565b8196505b806000036140c25760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610f48565b606b546001600160a01b03166316bf55796140de600184615c92565b6040518263ffffffff1660e01b81526004016140fc91815260200190565b602060405180830381865afa158015614119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413d919061589a565b9550505050505061415d87896101a001803603810190612d5d91906159d4565b94508585148061416b575085155b6141b75760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610f48565b60006141c286613177565b54600160c81b900460ff1660028111156141de576141de6154fe565b1461422b5760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610f48565b825460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529087901b16607c830152805160648184030181526084909201905280519101206000916142cf9167ffffffffffffffff909116159061452e565b90506142da84614bf9565b60008681526075602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b026fffffffffffffffffffffffffffffffff19909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b8360028111156143d3576143d36154fe565b021790555060a0820151816001015590505087867f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536308b8587606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff166040516144519796959493929190615d29565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156144f25760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e2919061589a565b6000878152607c60205260409020555b50505050935093915050565b6000816040516020016145119190615dc3565b604051602081830303815290604052805190602001209050919050565b614536615125565b61453e615125565b67ffffffffffffffff4316604082015292151560608401525060a08201526001608082015290565b61456e614c7d565b6002608083018190525060008181526075602090815260409182902084518154928601519386015160608701511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b026fffffffffffffffffffffffffffffffff19909616929093169190911793909317939093169290921717808255608084015184929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115614671576146716154fe565b021790555060a0919091015160019091015560745550565b600061357b836001600160a01b038416614d02565b600061357b836001600160a01b038416614d51565b6060600061357b83614e3a565b6001600160a01b0381166000908152600183016020526040812054151561357b565b6001600160a01b0381163b61475f5760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e74726163740000000000000000006064820152608401610f48565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6147ac83614e96565b6000825111806147b95750805b15612a6657612db18383614ed6565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103613301565b6001600160a01b03811661486c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610f48565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103614782565b6001600160a01b0381163b6149105760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610f48565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc614782565b6147ac83614efb565b8051600090815b602002015192915050565b80516000906001614947565b6001600160a01b038216600090815260786020526040812054906149828383615a3b565b6001600160a01b03851660009081526078602052604081208290556079805492935085929091906149b4908490615a3b565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60335460ff1615610edf5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610f48565b600080614a6b61404436869003860186615c76565b90506000614a8161404436869003860186615c76565b90508067ffffffffffffffff168267ffffffffffffffff161015614aab57600019925050506111ec565b8067ffffffffffffffff168267ffffffffffffffff161115614ad2576001925050506111ec565b6000614aeb614ae636889003880188615c76565b614f3b565b90506000614b01614ae636889003880188615c76565b90508067ffffffffffffffff168267ffffffffffffffff161015614b2d576000199450505050506111ec565b8067ffffffffffffffff168267ffffffffffffffff161115614b565760019450505050506111ec565b60009450505050506111ec565b600080614b7861404436869003860186615c76565b9050828167ffffffffffffffff161015614b97576000199150506111ec565b828167ffffffffffffffff161115614bb35760019150506111ec565b6000614bc7614ae636879003870187615c76565b67ffffffffffffffff161115614be15760019150506111ec565b60009150506111ec565b602081015160009081614947565b805467ffffffffffffffff16600003614c2957805467ffffffffffffffff19164367ffffffffffffffff16179055565b8054600160401b900467ffffffffffffffff166000036110d35780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4367ffffffffffffffff1602179055565b600054610100900460ff16614cfa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f48565b610edf614f4a565b6000818152600183016020526040812054614d49575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556111ec565b5060006111ec565b60008181526001830160205260408120548015614be1576000614d75600183615c92565b8554909150600090614d8990600190615c92565b9050818114614dee576000866000018281548110614da957614da961573f565b9060005260206000200154905080876000018481548110614dcc57614dcc61573f565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614dff57614dff615dd1565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506111ec565b606081600001805480602002602001604051908101604052809291908181526020018280548015614e8a57602002820191906000526020600020905b815481526020019060010190808311614e76575b50505050509050919050565b614e9f816146e2565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b606061357b8383604051806060016040528060278152602001615e1b60279139614fd3565b614f0481614893565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60208101516000906001614947565b600054610100900460ff16614fc75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f48565b6033805460ff19169055565b60606001600160a01b0384163b6150525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610f48565b600080856001600160a01b03168560405161506d9190615c5a565b600060405180830381855af49150503d80600081146150a8576040519150601f19603f3d011682016040523d82523d6000602084013e6150ad565b606091505b50915091506150bd8282866150c7565b9695505050505050565b606083156150d657508161357b565b8251156150e65782518084602001fd5b8160405162461bcd60e51b8152600401610f489190615de7565b60405180604001604052806151136151c6565b81526020016151206151c6565b905290565b6040805160c081018252600080825260208201819052918101829052606081018290529060808201905b8152600060209091015290565b60405180606001604052806151ac604080516060808201835260008083526020808401829052845160a0810186528281529081018290528085018290529182018190526080820152909182015290565b81526020016151b96151e4565b81526020016151206151e4565b60405180604001604052806002906020820280368337509192915050565b60405180606001604052806151f7615100565b8152602001600061514f565b60008082840360c081121561521757600080fd5b8335925060a0601f198201121561522d57600080fd5b506020830190509250929050565b60006020828403121561524d57600080fd5b5035919050565b6001600160a01b03811681146110d357600080fd5b60006020828403121561527b57600080fd5b813561357b81615254565b80151581146110d357600080fd5b600080604083850312156152a757600080fd5b82356152b281615254565b915060208301356152c281615286565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715615306576153066152cd565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615335576153356152cd565b604052919050565b6000806040838503121561535057600080fd5b823561535b81615254565b915060208381013567ffffffffffffffff8082111561537957600080fd5b818601915086601f83011261538d57600080fd5b81358181111561539f5761539f6152cd565b6153b184601f19601f8401160161530c565b915080825287848285010111156153c757600080fd5b80848401858401376000848284010152508093505050509250929050565b600060c082840312156153f757600080fd5b50919050565b600080600080610120858703121561541457600080fd5b843593506020850135925061542c86604087016153e5565b939692955092936101000135925050565b803567ffffffffffffffff811681146112ab57600080fd5b60006020828403121561546757600080fd5b61357b8261543d565b60008083601f84011261548257600080fd5b50813567ffffffffffffffff81111561549a57600080fd5b6020830191508360208260051b85010111156154b557600080fd5b9250929050565b600080602083850312156154cf57600080fd5b823567ffffffffffffffff8111156154e657600080fd5b6154f285828601615470565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b600381106110d357634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015115156060830152608083015161557c81615514565b8060808401525060a083015160a083015292915050565b60008060008385036102a08112156155aa57600080fd5b84359350610260601f19820112156155c157600080fd5b5060208401915061028084013590509250925092565b6000808284036101408112156155ec57600080fd5b833567ffffffffffffffff81111561560357600080fd5b84016103a0818703121561561657600080fd5b9250610120601f198201121561522d57600080fd5b60006020828403121561563d57600080fd5b813561357b81615286565b6000806000806040858703121561565e57600080fd5b843567ffffffffffffffff8082111561567657600080fd5b61568288838901615470565b9096509450602087013591508082111561569b57600080fd5b506156a887828801615470565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156156f55783516001600160a01b0316835292840192918401916001016156d0565b50909695505050505050565b600080600080610120858703121561571857600080fd5b8435935061572986602087016153e5565b939693955050505060e082013591610100013590565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361577e5761577e615755565b5060010190565b8183526000602080850194508260005b858110156157c35781356157a881615254565b6001600160a01b031687529582019590820190600101615795565b509495945050505050565b602081526000613578602083018486615785565b6000602082840312156157f457600080fd5b815161357b81615286565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261583457600080fd5b83018035915067ffffffffffffffff82111561584f57600080fd5b6020019150368190038213156154b557600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156158ac57600080fd5b5051919050565b600082601f8301126158c457600080fd5b6040516040810181811067ffffffffffffffff821117156158e7576158e76152cd565b80604052508060408401858111156158fe57600080fd5b845b8181101561591f576159118161543d565b835260209283019201615900565b509195945050505050565b60006080828403121561593c57600080fd5b6040516040810181811067ffffffffffffffff8211171561595f5761595f6152cd565b604052905080601f8301841361597457600080fd5b61597c6152e3565b80604085018681111561598e57600080fd5b855b818110156159a8578035845260209384019301615990565b508184526159b687826158b3565b60208501525050505092915050565b8035600381106112ab57600080fd5b600060c082840312156159e657600080fd5b6040516060810181811067ffffffffffffffff82111715615a0957615a096152cd565b604052615a16848461592a565b8152615a24608084016159c5565b602082015260a09290920135604083015250919050565b808201808211156111ec576111ec615755565b615a5781615514565b9052565b805180518360005b6002811015615a82578251825260209283019290910190600101615a63565b505050602090810151906040840160005b6002811015615aba57835167ffffffffffffffff1682529282019290820190600101615a93565b50508201519050615ace6080840182615a4e565b506040015160a09190910152565b600061032082019050885180518352602081015160208401526040810151905080516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c08601525050506020890151615b5760e0840182615a5b565b506040890151615b6b6101a0840182615a5b565b508761026083015286610280830152856102a0830152846102c0830152615b9e6102e08301856001600160a01b03169052565b67ffffffffffffffff831661030083015298975050505050505050565b604081526000615bcf604083018688615785565b8281036020848101919091528482528591810160005b86811015615c0c578335615bf881615286565b151582529282019290820190600101615be5565b5098975050505050505050565b600060208284031215615c2b57600080fd5b815161357b81615254565b60005b83811015615c51578181015183820152602001615c39565b50506000910152565b60008251615c6c818460208701615c36565b9190910192915050565b600060808284031215615c8857600080fd5b61357b838361592a565b818103818111156111ec576111ec615755565b600060208284031215615cb757600080fd5b61357b826159c5565b6040818337604082016040820160005b6002811015615d015767ffffffffffffffff615ceb8361543d565b1683526020928301929190910190600101615cd0565b505050615d10608082016159c5565b615d1981615514565b608083015260a090810135910152565b600061032082019050883582526020890135602083015260408901356040830152606089013560608301526080890135615d6281615254565b6001600160a01b03166080830152615d7c60a08a0161543d565b67ffffffffffffffff80821660a085015280615d9a60c08d0161543d565b1660c08501525050615db260e0830160e08b01615cc0565b6101a0615b6b818401828c01615cc0565b60c081016111ec8284615a5b565b634e487b7160e01b600052603160045260246000fd5b6020815260008251806020840152615e06816040850160208701615c36565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220dd6d9989023bc385a9c6e6643518ea30bfc0354680f9af3468ae53d31cb2984c64736f6c63430008110033",
|
2202
|
+
"deployedBytecode": "0x60806040526004361061044a5760003560e01c806376e7e23b11610243578063b7ab4db511610143578063e8bd4922116100bb578063f112cea31161008a578063fb0e722b1161006f578063fb0e722b14610e77578063fc8ffa0314610e97578063ff204f3b14610eb757600080fd5b8063f112cea314610e37578063facd743b14610e5757600080fd5b8063e8bd492214610d23578063ee35f32714610dcc578063ef40a67014610de1578063f065de3f14610e1757600080fd5b8063dff6978711610112578063e531d8c7116100f7578063e531d8c714610cbb578063e6b3082c14610cdb578063e78cea9214610d0357600080fd5b8063dff6978714610c86578063e51019a614610c9b57600080fd5b8063b7ab4db514610c04578063bc45e0ae14610c26578063ce11e6ab14610c46578063ce66d05c14610c6657600080fd5b80639846129a116101d6578063a23c44b1116101a5578063a3ffb7721161018a578063a3ffb77214610ba4578063aa38a6e714610bc4578063b7626e7314610be457600080fd5b8063a23c44b114610a71578063a2b4f1d814610b8457600080fd5b80639846129a14610a085780639a7b455614610a1b5780639a8a059214610a3b5780639e7e6aa714610a5157600080fd5b80638830288411610212578063883028841461098557806389384960146109b25780638ee1a126146109d2578063948d6588146109e857600080fd5b806376e7e23b146108f15780637c75c298146109075780638456cb591461092757806384728cd01461093c57600080fd5b80633be680ea1161034e57806355840a58116102e15780635c975abb116102b057806365f7f80d1161029557806365f7f80d146108a65780636ddd3744146108bb57806371ef232c146108db57600080fd5b80635c975abb1461084b5780636177fd181461086357600080fd5b806355840a58146107c6578063567ca41b146107eb57806356bbc9e61461080b5780635bf038331461082b57600080fd5b80634f61f8501161031d5780634f61f8501461075157806351ed6a301461077157806352d1902d1461079157806353b60c4a146107a657600080fd5b80633be680ea146106cf57806345e38b641461070857806347fb24c51461071e5780634f1ef2861461073e57600080fd5b806313af4035116103e15780632e7acfa6116103b05780633083622811610395578063308362281461067a578063353325e01461069a5780633659cfe6146106af57600080fd5b80632e7acfa6146106235780632f30cabd1461064457600080fd5b806313af40351461058657806313c56ca7146105a65780631b1689e9146105d45780632abdd230146105ea57600080fd5b80630d40a0fd1161041d5780630d40a0fd146104e35780630d561b3714610503578063117155851461052357806312ab3d3b1461055c57600080fd5b8063023a96fe1461044f578063046f7da21461048c57806304972af9146104a357806306ae5851146104c3575b600080fd5b34801561045b57600080fd5b5060695461046f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561049857600080fd5b506104a1610ed7565b005b3480156104af57600080fd5b506104a16104be366004615203565b610ee1565b3480156104cf57600080fd5b506104a16104de36600461523b565b610efb565b3480156104ef57600080fd5b506104a16104fe366004615269565b610f8d565b34801561050f57600080fd5b506104a161051e366004615269565b6110d6565b34801561052f57600080fd5b5061054361053e36600461523b565b611143565b60405167ffffffffffffffff9091168152602001610483565b34801561056857600080fd5b50607b546105769060ff1681565b6040519015158152602001610483565b34801561059257600080fd5b506104a16105a1366004615269565b61115f565b3480156105b257600080fd5b506105c66105c136600461523b565b611168565b604051908152602001610483565b3480156105e057600080fd5b506105c6607a5481565b3480156105f657600080fd5b506105c6610605366004615269565b6001600160a01b031660009081526077602052604090206001015490565b34801561062f57600080fd5b506066546105439067ffffffffffffffff1681565b34801561065057600080fd5b506105c661065f366004615269565b6001600160a01b031660009081526078602052604090205490565b34801561068657600080fd5b5061057661069536600461523b565b6112b0565b3480156106a657600080fd5b506105c66112cc565b3480156106bb57600080fd5b506104a16106ca366004615269565b611308565b3480156106db57600080fd5b506069546105439074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b34801561071457600080fd5b506105c660715481565b34801561072a57600080fd5b506104a1610739366004615294565b61144e565b6104a161074c36600461533d565b611517565b34801561075d57600080fd5b506104a161076c366004615269565b61164d565b34801561077d57600080fd5b5060705461046f906001600160a01b031681565b34801561079d57600080fd5b506105c66116ff565b3480156107b257600080fd5b506104a16107c1366004615269565b6117c4565b3480156107d257600080fd5b50607b5461046f9061010090046001600160a01b031681565b3480156107f757600080fd5b506104a1610806366004615269565b611812565b34801561081757600080fd5b5061054361082636600461523b565b611929565b34801561083757600080fd5b506104a16108463660046153fd565b61194c565b34801561085757600080fd5b5060335460ff16610576565b34801561086f57600080fd5b5061057661087e366004615269565b6001600160a01b0316600090815260776020526040902060020154600160401b900460ff1690565b3480156108b257600080fd5b506074546105c6565b3480156108c757600080fd5b5061046f6108d6366004615455565b611991565b3480156108e757600080fd5b506105c660795481565b3480156108fd57600080fd5b506105c660675481565b34801561091357600080fd5b506104a16109223660046154bc565b6119cb565b34801561093357600080fd5b506104a1611ad0565b34801561094857600080fd5b5061046f610957366004615269565b6001600160a01b03908116600090815260776020526040902060020154690100000000000000000090041690565b34801561099157600080fd5b506109a56109a036600461523b565b611ad8565b6040516104839190615532565b3480156109be57600080fd5b506104a16109cd36600461523b565b611b7a565b3480156109de57600080fd5b506105c660685481565b3480156109f457600080fd5b506104a1610a0336600461523b565b611baf565b6104a1610a1636600461533d565b611be4565b348015610a2757600080fd5b506104a1610a36366004615593565b611d1a565b348015610a4757600080fd5b506105c660655481565b348015610a5d57600080fd5b506104a1610a6c3660046155d7565b611d5f565b348015610a7d57600080fd5b50610b2d610a8c366004615269565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260776020908152604091829020825160a081018452815481526001820154928101929092526002015467ffffffffffffffff81169282019290925260ff600160401b830416151560608201526901000000000000000000909104909116608082015290565b6040516104839190600060a082019050825182526020830151602083015267ffffffffffffffff60408401511660408301526060830151151560608301526001600160a01b03608084015116608083015292915050565b348015610b9057600080fd5b506104a1610b9f36600461562b565b612a6b565b348015610bb057600080fd5b506104a1610bbf366004615648565b612aac565b348015610bd057600080fd5b50606d5461046f906001600160a01b031681565b348015610bf057600080fd5b506104a1610bff366004615269565b612c41565b348015610c1057600080fd5b50610c19612c8f565b60405161048391906156b4565b348015610c3257600080fd5b50606e5461046f906001600160a01b031681565b348015610c5257600080fd5b50606c5461046f906001600160a01b031681565b348015610c7257600080fd5b506104a1610c81366004615455565b612ca0565b348015610c9257600080fd5b50607654610543565b348015610ca757600080fd5b506104a1610cb6366004615701565b612d4a565b348015610cc757600080fd5b50610576610cd636600461523b565b612db7565b348015610ce757600080fd5b5060665461054390600160401b900467ffffffffffffffff1681565b348015610d0f57600080fd5b50606b5461046f906001600160a01b031681565b348015610d2f57600080fd5b50610d8c610d3e366004615269565b60776020526000908152604090208054600182015460029092015490919067ffffffffffffffff811690600160401b810460ff1690690100000000000000000090046001600160a01b031685565b60408051958652602086019490945267ffffffffffffffff9092169284019290925290151560608301526001600160a01b0316608082015260a001610483565b348015610dd857600080fd5b5061046f612de7565b348015610ded57600080fd5b506105c6610dfc366004615269565b6001600160a01b031660009081526077602052604090205490565b348015610e2357600080fd5b50606f5461046f906001600160a01b031681565b348015610e4357600080fd5b506104a1610e52366004615455565b612e6e565b348015610e6357600080fd5b50610576610e72366004615269565b612ede565b348015610e8357600080fd5b50606a5461046f906001600160a01b031681565b348015610ea357600080fd5b506104a1610eb2366004615269565b612eeb565b348015610ec357600080fd5b506104a1610ed2366004615269565b612f8f565b610edf613125565b565b610ef781610eee84613177565b600101546131d8565b5050565b6067548111610f515760405162461bcd60e51b815260206004820152601c60248201527f424153455f5354414b455f4d5553545f42455f494e435245415345440000000060448201526064015b60405180910390fd5b60678190556040518181527f54404e5f5326112dad416747228f2fcd704e702c56bf0673ce7e531108e07c1b906020015b60405180910390a150565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361101a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661104c6132dd565b6001600160a01b0316146110b75760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b604080516000808252602082019092526110d391839190613310565b50565b607b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b038416908102919091179091556040519081527fd3ab4cbe1b6f519eb43f09ded17a12e81b811e297063ada2d65dddef5b612c7c90602001610f82565b600061114e82613177565b5467ffffffffffffffff1692915050565b6110d3816134b0565b60007f0000000000000000000000000000000000000000000000000000000000000000156111f2576000828152607c6020526040902054806111ec5760405162461bcd60e51b815260206004820152600c60248201527f4e4f5f415353455254494f4e00000000000000000000000000000000000000006044820152606401610f48565b92915050565b60006111fd83613177565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b830481161515606083015292935061129392909184916080840191600160c81b900416600281111561126f5761126f6154fe565b6002811115611280576112806154fe565b8152602001600182015481525050613504565b54600160801b900467ffffffffffffffff1692915050565b919050565b60006112bb82613177565b54600160c01b900460ff1692915050565b60006112d6615100565b6040805160608101825282815260016020820152600091810182905290806112ff818481613569565b94505050505090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113955760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113c76132dd565b6001600160a01b0316146114325760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b604080516000808252602082019092526110d391839190613582565b606b546040517f47fb24c50000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152909116906347fb24c590604401600060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b5050604080516001600160a01b038616815284151560208201527fce7e7eac3fe4e3d77ad155523b4ddb4446965e38cbc7c8a484bb82dc817637ef93500190505b60405180910390a15050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115a45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115d66132dd565b6001600160a01b0316146116415760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b610ef782826001613582565b606b546040517f4f61f8500000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634f61f85090602401600060405180830381600087803b1580156116ad57600080fd5b505af11580156116c1573d6000803e3d6000fd5b50506040516001600160a01b03841681527f82740fc8dc15b355f3eb60cd600d43cd104e6906458cccd4cb51bcd1384c0c3492506020019050610f82565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461179f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610f48565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9cf43f86b7edba7593cadbd304522caa8a94db8ec03e204762b19c6955f2c34590602001610f82565b606c546001600160a01b03908116908216036118705760405162461bcd60e51b815260206004820152600a60248201527f4355525f4f5554424f58000000000000000000000000000000000000000000006044820152606401610f48565b606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600060248301529091169063cee3d72890604401600060405180830381600087803b1580156118d757600080fd5b505af11580156118eb573d6000803e3d6000fd5b50506040516001600160a01b03841681527ffe29ae11ccc2c860bf49dbf67ca96fa1db99cb935b0a7c02e3fad38ea80d6c2592506020019050610f82565b600061193482613177565b54600160401b900467ffffffffffffffff1692915050565b611954613722565b61196084848484613774565b60405184907f0ef6ac64bd6b0fa95ed37aa19a1b16613fb89e2269c92639a9d516a64fea493890600090a250505050565b600060768267ffffffffffffffff16815481106119b0576119b061573f565b6000918252602090912001546001600160a01b031692915050565b6119d3613722565b80611a205760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610f48565b60005b81811015611a9e57611a5a838383818110611a4057611a4061573f565b9050602002016020810190611a559190615269565b613991565b611a8b838383818110611a6f57611a6f61573f565b9050602002016020810190611a849190615269565b6000613a95565b5080611a968161576b565b915050611a23565b507f53e7f63f13f0c1bf266cf49783f9c98757c2adbe729a1358bc92635b2b4d7352828260405161150b9291906157ce565b610edf613b96565b611ae0615125565b611ae982613177565b6040805160c081018252825467ffffffffffffffff8082168352600160401b820481166020840152600160801b8204169282019290925260ff600160c01b83048116151560608301529092916080840191600160c81b909104166002811115611b5457611b546154fe565b6002811115611b6557611b656154fe565b81526020016001820154815250509050919050565b60688190556040518181527f7c4db9e8738aa15b72d17ae77a824047a59f8657e14b5a5a75cb6d08213a1db790602001610f82565b60718190556040518181527f238dc443e1da4236615831e66e5dd5ed97848f0eec72bcb57efa87438fca687390602001610f82565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611c715760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ca36132dd565b6001600160a01b031614611d0e5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b610ef782826001613310565b611d22613722565b611d2d828483613bd3565b505060405181907fe5256bb4fdac498ff91fac1e162648b613c54eae8e784a5e73ca9ffcb0a08a6e90600090a2505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611dec5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e1e6132dd565b6001600160a01b031614611e895760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f48565b600054610100900460ff1615808015611ea95750600054600160ff909116105b80611ec35750303b158015611ec3575060005460ff166001145b611f355760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610f48565b6000805460ff191660011790558015611f58576000805461ff0019166101001790555b43607a55611f696020830183615269565b606b80546001600160a01b0319166001600160a01b0392909216919091179055611f966020830183615269565b6001600160a01b03166347fb24c5611fb46060850160408601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b5061203a925050506020830183615269565b6001600160a01b0316634f61f8506120586040850160208601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b506120da925050506060830160408401615269565b606a80546001600160a01b0319166001600160a01b039290921691909117905561210a6080830160608401615269565b606c80546001600160a01b0319166001600160a01b03929092169190911790556121376020830183615269565b6001600160a01b031663cee3d7286121556080850160608601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b1580156121b557600080fd5b505af11580156121c9573d6000803e3d6000fd5b506121de9250505060a0830160808401615269565b606d80546001600160a01b0319166001600160a01b03928316179055606b541663ae60bd1361221360a0850160808601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561226f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229391906157e2565b6123bc576122a46020830183615269565b6001600160a01b03166347fb24c56122c260a0850160808601615269565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801561232257600080fd5b505af1158015612336573d6000803e3d6000fd5b5061234b9250505060a0830160808401615269565b6001600160a01b031663cf8d56d660c085013561236b60e08701876157ff565b6040518463ffffffff1660e01b815260040161238993929190615864565b600060405180830381600087803b1580156123a357600080fd5b505af11580156123b7573d6000803e3d6000fd5b505050505b6123cc6040830160208401615269565b6001600160a01b0316637fa3a40e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242d919061589a565b6000036124e7576124446040830160208401615269565b6040517fe0bc972900000000000000000000000000000000000000000000000000000000815260006004820181905260c0602483015260c4820181905260016044830181905260648301829052608483019190915260a48201526001600160a01b03919091169063e0bc97299060e401600060405180830381600087803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b505050505b6124f961012083016101008401615269565b606e80546001600160a01b0319166001600160a01b039290921691909117905561252960c0830160a08401615269565b606980546001600160a01b0319166001600160a01b03929092169190911790556125566020840184615455565b6066805460c086013560655560408601356067556060860135606855604b60715567ffffffffffffffff929092166fffffffffffffffffffffffffffffffff19909216919091176a03138000000000000000001790556125be61034084016103208501615455565b6069805467ffffffffffffffff9290921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055600061262260c0850160a08601615269565b6001600160a01b0316036126785760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610f48565b61268860c0840160a08501615269565b606f80546001600160a01b0319166001600160a01b03929092169190911790556126b86040840160208501615269565b607080546001600160a01b0319166001600160a01b03929092169190911790556126ea61030084016102e08501615269565b607b80546001600160a01b0392909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055600080806127808161274b612746368a90038a016102008b016159d4565b6144fe565b604080516020808201949094528082019290925260608083018790528151808403909101815260809092019052805191012090565b90506000606b60009054906101000a90046001600160a01b03166001600160a01b03166284120c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fa919061589a565b9050866102c00135810361281657612813600182615a3b565b90505b60685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529085901b16607c830152805160648184030181526084909201905280519101206000906128ad9060019061452e565b90506128b98184614566565b6128c161515c565b6128d4368a90038a016102008b016159d4565b60408083019190915260685460675460695460665493518a9489947f901c3aee23cf4478825462caaab375c606ab83516060388344f0650340753630946129399489948e948d9493926001600160a01b03169167ffffffffffffffff90911690615adc565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156129da5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ca919061589a565b6000858152607c60205260409020555b6040805160608b0135815260c08b013560208201527ffc1b83c11d99d08a938e0b82a0bd45f822f71ff5abf23f999c93c4533d752464910160405180910390a15050505050508015612a66576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b607b805460ff19168215159081179091556040519081527f016436ae56a1958a8efa3965e4839a8a90009e0a225fd19fe89b701c99f3e6e990602001610f82565b82612af95760405162461bcd60e51b815260206004820152600b60248201527f454d5054595f41525241590000000000000000000000000000000000000000006044820152606401610f48565b828114612b485760405162461bcd60e51b815260206004820152600c60248201527f57524f4e475f4c454e47544800000000000000000000000000000000000000006044820152606401610f48565b60005b83811015612bfd57828282818110612b6557612b6561573f565b9050602002016020810190612b7a919061562b565b15612bb757612bb1858583818110612b9457612b9461573f565b9050602002016020810190612ba99190615269565b607290614689565b50612beb565b612be9858583818110612bcc57612bcc61573f565b9050602002016020810190612be19190615269565b60729061469e565b505b80612bf58161576b565b915050612b4b565b507f0d9690f97165f35991ae60d2a97e04aff472c08729722a9236ff1bc8b9ba90c084848484604051612c339493929190615bbb565b60405180910390a150505050565b606980546001600160a01b0319166001600160a01b0383169081179091556040519081527fe86d63ef871123954e3c79261a2ad29d42552412045093f9e7f3ba09a459874290602001610f82565b6060612c9b60726146b3565b905090565b60008167ffffffffffffffff1611612cfa5760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f434f4e4649524d5f504552494f44000000000000000000006044820152606401610f48565b6066805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527fa65727a75a71361b541984b5db16e2bd4a6a013f072fe8bb097eafd3844b769790602001610f82565b612d6382612d5d368690038601866159d4565b83613569565b8414612db15760405162461bcd60e51b815260206004820152601660248201527f494e56414c49445f415353455254494f4e5f48415348000000000000000000006044820152606401610f48565b50505050565b60006001612dc483613177565b54600160c81b900460ff166002811115612de057612de06154fe565b1492915050565b606b54604080517fee35f32700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ee35f3279160048083019260209291908290030181865afa158015612e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9b9190615c19565b606680547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b67ffffffffffffffff8416908102919091179091556040519081527f43f7dc42145cd896e425c1ba47e44ad7fac3214c8993455b88ea382f68a5ed3390602001610f82565b60006111ec6072836146c0565b6001600160a01b038116612f415760405162461bcd60e51b815260206004820152601060248201527f494e56414c49445f455343524f575f30000000000000000000000000000000006044820152606401610f48565b606f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f0b0f78bec1daf434a03f0d26fd75936a5391ef694a7ce32a964a316f40b530dd90602001610f82565b606c80546001600160a01b0319166001600160a01b03838116918217909255606b546040517fcee3d7280000000000000000000000000000000000000000000000000000000081526004810192909252600160248301529091169063cee3d72890604401600060405180830381600087803b15801561300d57600080fd5b505af1158015613021573d6000803e3d6000fd5b50506040516001600160a01b03841681527f0bff4fc5e4cd8fc762bca2b6ff29e3b73a463474097b3f1e972ed2a167b534a792506020019050610f82565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f2000000000000000000000000000000000000000000000000000000001790529051600091829182916064916130cb9190615c5a565b600060405180830381855afa9150503d8060008114613106576040519150601f19603f3d011682016040523d82523d6000602084013e61310b565b606091505b509150915081801561311e575080516020145b9250505090565b61312d613722565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000816131c65760405162461bcd60e51b815260206004820152601b60248201527f415353455254494f4e5f49445f43414e4e4f545f42455f5a45524f00000000006044820152606401610f48565b50600090815260756020526040902090565b61328f823560208401356131f26060860160408701615269565b6132026080870160608801615455565b61321260a0880160808901615455565b60408051602080820197909752808201959095526bffffffffffffffffffffffff19606094851b16938501939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b81166074860152911b16607c8301528051606481840301815260849092019052805191012090565b8114610ef75760405162461bcd60e51b815260206004820152601460248201527f434f4e4649475f484153485f4d49534d415443480000000000000000000000006044820152606401610f48565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b7f49bd798cd84788856140a4cd5030756b4d08a9e4d55db725ec195f232d262a895460ff161561334357612a66836146e2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561339d575060408051601f3d908101601f1916820190925261339a9181019061589a565b60015b61340f5760405162461bcd60e51b815260206004820152603860248201527f45524331393637557067726164653a206e6577207365636f6e6461727920696d60448201527f706c656d656e746174696f6e206973206e6f74205555505300000000000000006064820152608401610f48565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d81146134a45760405162461bcd60e51b815260206004820152603360248201527f45524331393637557067726164653a20756e737570706f72746564207365636f60448201527f6e646172792070726f786961626c6555554944000000000000000000000000006064820152608401610f48565b50612a668383836147a3565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6134d96147c8565b604080516001600160a01b03928316815291841660208301520160405180910390a16110d3816147f0565b60008160800151600281111561351c5761351c6154fe565b036110d35760405162461bcd60e51b815260206004820152601360248201527f415353455254494f4e5f4e4f545f4558495354000000000000000000000000006044820152606401610f48565b60006135788461274b856144fe565b90505b9392505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156135b557612a6683614893565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561360f575060408051601f3d908101601f1916820190925261360c9181019061589a565b60015b6136815760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610f48565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146137165760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610f48565b50612a66838383614937565b60335460ff16610edf5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610f48565b600061377f85613177565b905060018154600160c81b900460ff1660028111156137a0576137a06154fe565b146137ed5760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610f48565b61380684613800368690038601866159d4565b84613569565b85146138545760405162461bcd60e51b815260206004820152600c60248201527f434f4e4649524d5f4441544100000000000000000000000000000000000000006044820152606401610f48565b600061386d61386836869003860186615c76565b614940565b9050600061388861388336879003870187615c76565b614952565b606c546040517fa04cee6000000000000000000000000000000000000000000000000000000000815260048101839052602481018590529192506001600160a01b03169063a04cee6090604401600060405180830381600087803b1580156138ef57600080fd5b505af1158015613903573d6000803e3d6000fd5b50505060748890555082547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167902000000000000000000000000000000000000000000000000001783556040805183815260208101839052815189927ffc42829b29c259a7370ab56c8f69fce23b5f351a9ce151da453281993ec0090c928290030190a250505050505050565b6001600160a01b038116600090815260776020526040902060020154600160401b900460ff16613a035760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f5354414b4544000000000000000000000000000000000000000000006044820152606401610f48565b6001600160a01b03811660009081526077602052604081206001015460745490919082149080613a3284613177565b5467ffffffffffffffff161190508180613a495750805b612db15760405162461bcd60e51b815260206004820152600c60248201527f5354414b455f41435449564500000000000000000000000000000000000000006044820152606401610f48565b6001600160a01b038083166000908152607760205260408120600281015481549293919269010000000000000000009091049091169080851115613b1b5760405162461bcd60e51b815260206004820152601060248201527f544f4f5f4c4954544c455f5354414b45000000000000000000000000000000006044820152606401610f48565b6000613b278683615c92565b8685559050613b36838261495e565b826001600160a01b0316876001600160a01b03167fd957cf2340073335d256f72a9ef89cf1a43c31143341a6a53575ef33e987beb88489604051613b84929190918252602082015260400190565b60405180910390a39695505050505050565b613b9e614a03565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861315a3390565b600080613be660408601610eee86613177565b6001613bfa61024087016102208801615ca5565b6002811115613c0b57613c0b6154fe565b1480613c3957506002613c2661024087016102208801615ca5565b6002811115613c3757613c376154fe565b145b613c855760405162461bcd60e51b815260206004820152601060248201527f4241445f41465445525f535441545553000000000000000000000000000000006044820152606401610f48565b83613ca78635613c9d36899003890160e08a016159d4565b6020890135613569565b14613cf45760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4245464f52455f53544154450000000000000000000000006044820152606401610f48565b6001613d0861018087016101608801615ca5565b6002811115613d1957613d196154fe565b14613d665760405162461bcd60e51b815260206004820152600f60248201527f4241445f505245565f53544154555300000000000000000000000000000000006044820152606401610f48565b6000613d7185613177565b90506000806101a0880160e0890182613d8a8383614a56565b1215613dd85760405162461bcd60e51b815260206004820152600f60248201527f494e424f585f4241434b574152445300000000000000000000000000000000006044820152606401610f48565b6000613dfe613ded60e08d0160c08e01615455565b849067ffffffffffffffff16614b63565b90506000811315613e515760405162461bcd60e51b815260206004820152600d60248201527f494e424f585f544f4f5f464152000000000000000000000000000000000000006044820152606401610f48565b6002613e656102408d016102208e01615ca5565b6002811115613e7657613e766154fe565b14158015613e845750600081125b15613ee657600196506000613e998484614a56565b13613ee65760405162461bcd60e51b815260206004820152601360248201527f4f564552464c4f575f5354414e445354494c4c000000000000000000000000006044820152606401610f48565b606b54604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015613f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6b919061589a565b90506000613f798583614b63565b1315613fc75760405162461bcd60e51b815260206004820152600e60248201527f494e424f585f504153545f454e440000000000000000000000000000000000006044820152606401610f48565b80613fd860e08e0160c08f01615455565b67ffffffffffffffff1611156140305760405162461bcd60e51b815260206004820152601360248201527f494e424f585f4e4f545f504f50554c41544544000000000000000000000000006044820152606401610f48565b600061404961404436879003870187615c76565b614beb565b67ffffffffffffffff16905081810361406e57614067826001615a3b565b9650614072565b8196505b806000036140c25760405162461bcd60e51b815260206004820152601160248201527f454d5054595f494e424f585f434f554e540000000000000000000000000000006044820152606401610f48565b606b546001600160a01b03166316bf55796140de600184615c92565b6040518263ffffffff1660e01b81526004016140fc91815260200190565b602060405180830381865afa158015614119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413d919061589a565b9550505050505061415d87896101a001803603810190612d5d91906159d4565b94508585148061416b575085155b6141b75760405162461bcd60e51b815260206004820152601960248201527f554e45585045435445445f415353455254494f4e5f48415348000000000000006044820152606401610f48565b60006141c286613177565b54600160c81b900460ff1660028111156141de576141de6154fe565b1461422b5760405162461bcd60e51b815260206004820152600e60248201527f415353455254494f4e5f5345454e0000000000000000000000000000000000006044820152606401610f48565b825460685460675460695460665460408051602080820196909652808201949094526bffffffffffffffffffffffff19606093841b16928401929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b811660748501529087901b16607c830152805160648184030181526084909201905280519101206000916142cf9167ffffffffffffffff909116159061452e565b90506142da84614bf9565b60008681526075602090815260409182902083518154928501519385015160608601511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b026fffffffffffffffffffffffffffffffff19909616929093169190911793909317939093169290921717808255608083015183929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b8360028111156143d3576143d36154fe565b021790555060a0820151816001015590505087867f901c3aee23cf4478825462caaab375c606ab83516060388344f06503407536308b8587606854606754606960009054906101000a90046001600160a01b0316606660009054906101000a900467ffffffffffffffff166040516144519796959493929190615d29565b60405180910390a37f0000000000000000000000000000000000000000000000000000000000000000156144f25760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e2919061589a565b6000878152607c60205260409020555b50505050935093915050565b6000816040516020016145119190615dc3565b604051602081830303815290604052805190602001209050919050565b614536615125565b61453e615125565b67ffffffffffffffff4316604082015292151560608401525060a08201526001608082015290565b61456e614c7d565b6002608083018190525060008181526075602090815260409182902084518154928601519386015160608701511515600160c01b027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff928316600160801b02167fffffffffffffff000000000000000000ffffffffffffffffffffffffffffffff968316600160401b026fffffffffffffffffffffffffffffffff19909616929093169190911793909317939093169290921717808255608084015184929182907fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b836002811115614671576146716154fe565b021790555060a0919091015160019091015560745550565b600061357b836001600160a01b038416614d02565b600061357b836001600160a01b038416614d51565b6060600061357b83614e3a565b6001600160a01b0381166000908152600183016020526040812054151561357b565b6001600160a01b0381163b61475f5760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e74726163740000000000000000006064820152608401610f48565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6147ac83614e96565b6000825111806147b95750805b15612a6657612db18383614ed6565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103613301565b6001600160a01b03811661486c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610f48565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103614782565b6001600160a01b0381163b6149105760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610f48565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc614782565b6147ac83614efb565b8051600090815b602002015192915050565b80516000906001614947565b6001600160a01b038216600090815260786020526040812054906149828383615a3b565b6001600160a01b03851660009081526078602052604081208290556079805492935085929091906149b4908490615a3b565b909155505060408051838152602081018390526001600160a01b038616917fa740af14c56e4e04a617b1de1eb20de73270decbaaead14f142aabf3038e5ae2910160405180910390a250505050565b60335460ff1615610edf5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610f48565b600080614a6b61404436869003860186615c76565b90506000614a8161404436869003860186615c76565b90508067ffffffffffffffff168267ffffffffffffffff161015614aab57600019925050506111ec565b8067ffffffffffffffff168267ffffffffffffffff161115614ad2576001925050506111ec565b6000614aeb614ae636889003880188615c76565b614f3b565b90506000614b01614ae636889003880188615c76565b90508067ffffffffffffffff168267ffffffffffffffff161015614b2d576000199450505050506111ec565b8067ffffffffffffffff168267ffffffffffffffff161115614b565760019450505050506111ec565b60009450505050506111ec565b600080614b7861404436869003860186615c76565b9050828167ffffffffffffffff161015614b97576000199150506111ec565b828167ffffffffffffffff161115614bb35760019150506111ec565b6000614bc7614ae636879003870187615c76565b67ffffffffffffffff161115614be15760019150506111ec565b60009150506111ec565b602081015160009081614947565b805467ffffffffffffffff16600003614c2957805467ffffffffffffffff19164367ffffffffffffffff16179055565b8054600160401b900467ffffffffffffffff166000036110d35780547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b4367ffffffffffffffff1602179055565b600054610100900460ff16614cfa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f48565b610edf614f4a565b6000818152600183016020526040812054614d49575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556111ec565b5060006111ec565b60008181526001830160205260408120548015614be1576000614d75600183615c92565b8554909150600090614d8990600190615c92565b9050818114614dee576000866000018281548110614da957614da961573f565b9060005260206000200154905080876000018481548110614dcc57614dcc61573f565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614dff57614dff615dd1565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506111ec565b606081600001805480602002602001604051908101604052809291908181526020018280548015614e8a57602002820191906000526020600020905b815481526020019060010190808311614e76575b50505050509050919050565b614e9f816146e2565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b606061357b8383604051806060016040528060278152602001615e1b60279139614fd3565b614f0481614893565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60208101516000906001614947565b600054610100900460ff16614fc75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610f48565b6033805460ff19169055565b60606001600160a01b0384163b6150525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610f48565b600080856001600160a01b03168560405161506d9190615c5a565b600060405180830381855af49150503d80600081146150a8576040519150601f19603f3d011682016040523d82523d6000602084013e6150ad565b606091505b50915091506150bd8282866150c7565b9695505050505050565b606083156150d657508161357b565b8251156150e65782518084602001fd5b8160405162461bcd60e51b8152600401610f489190615de7565b60405180604001604052806151136151c6565b81526020016151206151c6565b905290565b6040805160c081018252600080825260208201819052918101829052606081018290529060808201905b8152600060209091015290565b60405180606001604052806151ac604080516060808201835260008083526020808401829052845160a0810186528281529081018290528085018290529182018190526080820152909182015290565b81526020016151b96151e4565b81526020016151206151e4565b60405180604001604052806002906020820280368337509192915050565b60405180606001604052806151f7615100565b8152602001600061514f565b60008082840360c081121561521757600080fd5b8335925060a0601f198201121561522d57600080fd5b506020830190509250929050565b60006020828403121561524d57600080fd5b5035919050565b6001600160a01b03811681146110d357600080fd5b60006020828403121561527b57600080fd5b813561357b81615254565b80151581146110d357600080fd5b600080604083850312156152a757600080fd5b82356152b281615254565b915060208301356152c281615286565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715615306576153066152cd565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615335576153356152cd565b604052919050565b6000806040838503121561535057600080fd5b823561535b81615254565b915060208381013567ffffffffffffffff8082111561537957600080fd5b818601915086601f83011261538d57600080fd5b81358181111561539f5761539f6152cd565b6153b184601f19601f8401160161530c565b915080825287848285010111156153c757600080fd5b80848401858401376000848284010152508093505050509250929050565b600060c082840312156153f757600080fd5b50919050565b600080600080610120858703121561541457600080fd5b843593506020850135925061542c86604087016153e5565b939692955092936101000135925050565b803567ffffffffffffffff811681146112ab57600080fd5b60006020828403121561546757600080fd5b61357b8261543d565b60008083601f84011261548257600080fd5b50813567ffffffffffffffff81111561549a57600080fd5b6020830191508360208260051b85010111156154b557600080fd5b9250929050565b600080602083850312156154cf57600080fd5b823567ffffffffffffffff8111156154e657600080fd5b6154f285828601615470565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b600381106110d357634e487b7160e01b600052602160045260246000fd5b600060c08201905067ffffffffffffffff80845116835280602085015116602084015280604085015116604084015250606083015115156060830152608083015161557c81615514565b8060808401525060a083015160a083015292915050565b60008060008385036102a08112156155aa57600080fd5b84359350610260601f19820112156155c157600080fd5b5060208401915061028084013590509250925092565b6000808284036101408112156155ec57600080fd5b833567ffffffffffffffff81111561560357600080fd5b84016103a0818703121561561657600080fd5b9250610120601f198201121561522d57600080fd5b60006020828403121561563d57600080fd5b813561357b81615286565b6000806000806040858703121561565e57600080fd5b843567ffffffffffffffff8082111561567657600080fd5b61568288838901615470565b9096509450602087013591508082111561569b57600080fd5b506156a887828801615470565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156156f55783516001600160a01b0316835292840192918401916001016156d0565b50909695505050505050565b600080600080610120858703121561571857600080fd5b8435935061572986602087016153e5565b939693955050505060e082013591610100013590565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361577e5761577e615755565b5060010190565b8183526000602080850194508260005b858110156157c35781356157a881615254565b6001600160a01b031687529582019590820190600101615795565b509495945050505050565b602081526000613578602083018486615785565b6000602082840312156157f457600080fd5b815161357b81615286565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261583457600080fd5b83018035915067ffffffffffffffff82111561584f57600080fd5b6020019150368190038213156154b557600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156158ac57600080fd5b5051919050565b600082601f8301126158c457600080fd5b6040516040810181811067ffffffffffffffff821117156158e7576158e76152cd565b80604052508060408401858111156158fe57600080fd5b845b8181101561591f576159118161543d565b835260209283019201615900565b509195945050505050565b60006080828403121561593c57600080fd5b6040516040810181811067ffffffffffffffff8211171561595f5761595f6152cd565b604052905080601f8301841361597457600080fd5b61597c6152e3565b80604085018681111561598e57600080fd5b855b818110156159a8578035845260209384019301615990565b508184526159b687826158b3565b60208501525050505092915050565b8035600381106112ab57600080fd5b600060c082840312156159e657600080fd5b6040516060810181811067ffffffffffffffff82111715615a0957615a096152cd565b604052615a16848461592a565b8152615a24608084016159c5565b602082015260a09290920135604083015250919050565b808201808211156111ec576111ec615755565b615a5781615514565b9052565b805180518360005b6002811015615a82578251825260209283019290910190600101615a63565b505050602090810151906040840160005b6002811015615aba57835167ffffffffffffffff1682529282019290820190600101615a93565b50508201519050615ace6080840182615a4e565b506040015160a09190910152565b600061032082019050885180518352602081015160208401526040810151905080516040840152602081015160608401526001600160a01b036040820151166080840152606081015167ffffffffffffffff80821660a08601528060808401511660c08601525050506020890151615b5760e0840182615a5b565b506040890151615b6b6101a0840182615a5b565b508761026083015286610280830152856102a0830152846102c0830152615b9e6102e08301856001600160a01b03169052565b67ffffffffffffffff831661030083015298975050505050505050565b604081526000615bcf604083018688615785565b8281036020848101919091528482528591810160005b86811015615c0c578335615bf881615286565b151582529282019290820190600101615be5565b5098975050505050505050565b600060208284031215615c2b57600080fd5b815161357b81615254565b60005b83811015615c51578181015183820152602001615c39565b50506000910152565b60008251615c6c818460208701615c36565b9190910192915050565b600060808284031215615c8857600080fd5b61357b838361592a565b818103818111156111ec576111ec615755565b600060208284031215615cb757600080fd5b61357b826159c5565b6040818337604082016040820160005b6002811015615d015767ffffffffffffffff615ceb8361543d565b1683526020928301929190910190600101615cd0565b505050615d10608082016159c5565b615d1981615514565b608083015260a090810135910152565b600061032082019050883582526020890135602083015260408901356040830152606089013560608301526080890135615d6281615254565b6001600160a01b03166080830152615d7c60a08a0161543d565b67ffffffffffffffff80821660a085015280615d9a60c08d0161543d565b1660c08501525050615db260e0830160e08b01615cc0565b6101a0615b6b818401828c01615cc0565b60c081016111ec8284615a5b565b634e487b7160e01b600052603160045260246000fd5b6020815260008251806020840152615e06816040850160208701615c36565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220dd6d9989023bc385a9c6e6643518ea30bfc0354680f9af3468ae53d31cb2984c64736f6c63430008110033",
|
1832
2203
|
"linkReferences": {},
|
1833
2204
|
"deployedLinkReferences": {}
|
1834
2205
|
}
|